https://www.cnblogs.com/bruce1992/p/15028817.html

用c#中创建一个windows服务非常简单,与windows服务相关的类都在System.ServiceProcess命名空间下。

每个服务都需要继承自ServiceBase类,并重写相应的启动、暂停、停止等方法。

windows服务的相关信息是存放与注册表中的,所以他可以在不需要用户登录的情况下自动运行,在c#中你不需要再直接向注册表中添加信息了,c#提供了服务安装类 ServiceProcessInstaller和ServiceInstaller来实现服务的安装。

首先,用vs创建一个windows服务项目

2014-02-13_095454

成功后你可以看到

2014-02-13_095922

Program中只包含服务运行的相关信息

 

复制代码代码如下:

/// <summary>

/// 应用程序的主入口点。

/// </summary>

static void Main()

{

ServiceBase[] ServicesToRun;

ServicesToRun = new ServiceBase[]

{

new Service1()//这里是一个数组,意味着我们可以在一个服务进程中创建多个服务实例,只需要在这里加上即可

};

ServiceBase.Run(ServicesToRun);

}

 

Service1.cs就是我们需要的服务类,与windows服务相关的基本操作大都可以在这里找到,如:Start,Stop,Pause,Continue等,我们要做的就是根据这些操作做不同的处理就可以了。

我们先在服务Start和Stop时分别记录一条信息到D盘

 

复制代码代码如下:

protected override void OnStart(string[] args)

{

  File.AppendAllText(“d:” + this.GetType().Name + “.txt”, DateTime.Now.ToString(“yyyy-MM-dd HH:mm:ss 服务启动”));

}

protected override void OnStop()

{

  File.AppendAllText(“d:” + this.GetType().Name + “.txt”, DateTime.Now.ToString(“yyyy-MM-dd HH:mm:ss 服务停止”));

}

一个简单的服务就完成了,下一步添加安装信息

双击项目中的Service.cs转到服务设计界面,在空白处右键选择“添加安装程序”

2014-02-13_100931

vs会自动创建一个默认名称为ProjectInstaller.cs的文件并转到相应的设计界面

默认添加两个类 serviceProcessInstaller1和serviceInstaller1,第一个主要用来设置服务所属账户,关系到服务的运行,第二个是服务信息描述,如:服务名、是否自动启动等

右键serviceProcessInstaller1属性,将Account属性选择为LocalSystem

2014-02-13_101602

右键serviceInstaller1属性,将StartType属性设为Automatic(自动启动),Description为“我的第一个windows服务”

全部保存后生成,找到生成的程序。

2014-02-13_101956

由于windows服务不能通过双击直接运行,所以我们需要借助.net提供的InstallUtil.exe来安装服务。

2014-02-13_102233

按回车开始安装,成功后会提示 “提交”阶段已成功完成,如果失败则是“回滚”阶段已成功完成

2014-02-13_102400

打开windows服务管理器就能看到我们安装的服务,默认服务安装成功后不会立刻启动,需要我们手动启动

2014-02-13_102549

如果不出意外,会显示已启动

2014-02-13_102659

到D盘目录下找到Service1.txt,打开会看到我们填入的信息,说明我们做的windows服务已经成功了。

要卸载windows服务可以用InstallUtil.exe /u WindowsService1.exe来卸载或通过系统命令 sc delete 服务名来卸载。

原文地址:http://www.cnblogs.com/Dongmy/p/16883707.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性