当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > C#实现Windows 服务的制作安装和删除

ASP.NET
关于如何操作其他窗体的控件或变量的方法
一个简单的.net remoting客户端例子
System.Runtime.Remoting.Activation.ActivationServices.CreateInstance()
单点登录—演示:passport.winspace.net
WebSerivce研究笔记
[新]可精确到1毫秒的用以在记录文件中写入自定义的调试信息(主要是时间)的组件
vs.net 2005中文版下载地址收藏
VS2005Beta2安装几点经验和体会
一个Web文件上传的C#源代码
C#重点知识详解(一)
利用C#线程机制实现应用程序的单实例运行
C#重点知识详解(二)
c#重点知识详解(三)
c#重点知识详解(四)
c#重点知识解答(五)
c#重点知识详解(六)
通过命令行方式使用NUnit进行UT
程序控制开始菜单的弹出 C#
XSL、XML教程-DVBBS皮肤制作 最基本的语法
MapX从数据库读取数据形成新图层(C#)

ASP.NET 中的 C#实现Windows 服务的制作安装和删除


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 248 ::
收藏到网摘: n/a

  今天为大家整理一篇关于C#实现windows服务的制作与安装还有删除的文章,希望能帮助学习C#的同学进一步提高学习水平。

  运行Visual Studio.NET,建立一个C#的Windows服务项目。

  主程序代码:

以下为引用的内容:
以下是引用片段:
  using System;
  using System.Collections;
  using System.ComponentModel;
  using System.Data;
  using System.Diagnostics;
  using System.ServiceProcess;
  using System.Threading;
  using System.Windows.Forms;
  namespace CareEye
  ...{
  public class CareEye : System.ServiceProcess.ServiceBase
  ...{
  private Thread MainThread;
  /**//// 
  /// 必需的设计器变量。
  /// 
  private System.ComponentModel.Container components = null;
  public CareEye()
  ...{
  // 该调用是 Windows.Forms 组件设计器所必需的。
  InitializeComponent();
  // TODO: 在 InitComponent 调用后添加任何初始化
  MainThread = new Thread(new ThreadStart(ThreadFunc));
  MainThread.Priority = ThreadPriority.Lowest;
  }
  // 进程的主入口点
  static void Main()
  ...{
  //System.ServiceProcess.ServiceBase[] ServicesToRun;
  // 同一进程中可以运行多个用户服务。若要将
  //另一个服务添加到此进程,请更改下行
  // 以创建另一个服务对象。例如,
  //
  // ServicesToRun = New System.ServiceProcess.ServiceBase[] {new CareEye(), new MySecondUserService()};
  //
  //ServicesToRun = new System.ServiceProcess.ServiceBase[] { new CareEye() };
  System.ServiceProcess.ServiceBase.Run(new CareEye());
  }
  /**//// 
  /// 设计器支持所需的方法 - 不要使用代码编辑器
  /// 修改此方法的内容。
  /// 
  private void InitializeComponent()

以下为引用的内容:
  ...{
  //
  // CareEye
  //
  this.ServiceName = "CareEye";
  }
  /**//// 
  /// 清理所有正在使用的资源。
  /// 
  protected override void Dispose(bool disposing)
  ...{
  if (disposing)
  ...{
  if (components != null)
  ...{
  components.Dispose();
  }
  }
  base.Dispose(disposing);
  }
  /**//// 
  /// 设置具体的操作,以便服务可以执行它的工作。
  /// 
  protected override void OnStart(string[] args)
  ...{
  // TODO: 在此处添加代码以启动服务。
  MainThread.Start();
  }
  /**//// 
  /// 停止此服务。
  /// 
  protected override void OnStop()
  ...{
  // TODO: 在此处添加代码以执行停止服务所需的关闭操作。
  MainThread.Abort();
  }
  public static void ThreadFunc()
  ...{
  int LastHour = DateTime.Now.Hour;
  while (true)
  ...{
  System.Threading.Thread.Sleep(60000);
  if (DateTime.Now.Hour - 1 == LastHour)
  ...{
  MessageBox.Show("为了爱护您的眼睛,请您暂时休息5分钟并向远处眺望!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
  LastHour = DateTime.Now.Hour;
  }
  }
  }
  }
  }

  添加安装组件:

  在设计页面上点右键,出现菜单后,选择添加安装程序。这时会出现一个新的页面,页面上有个控件 serviceProcessInstaller1和serviceInstaller1

  在 serviceProcessInstaller1中把属性Account改为LocalSystem

  在把serviceInstaller1中把属性Parent 改为serviceProcessInstaller1 ServiceName属性是管生成服务后的名子

  添加完成之后,生成一下(假设名为W2.exe)。到相应的文件夹找到生成的exe文件,找到时会发现有两个.exe用名子比较短的那个。把这个文件拷到一个好记的文件夹中如F盘根目录。

  这时就是要把个服务安装一下。进入cmd中的画面,进入Framework2.0的文件如:

  cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727

  后在打

  InstallUtil f:\w2.exe 这个就安装了服务 卸载服务是 InstallUtil f:\w2.exe -u

  现在就剩启动服务了,

  到windows服务里启动你安装的服务就可以了。