今天学习了在.net下创建一个windows服务,总结一下学习心得。
开发环境:visual studio 2012
一、编写程序
(1)创建一个空解决方法
(2)添加一个控制台应用程序项目
(3)添加一个Windows服务,如下所示:
(4)右键 查看代码
看到如下代码:
public WindowsService() { InitializeComponent(); } protected override void OnStart(string[] args) { } protected override void OnStop() { }
其中,OnStart方法在 启动服务时执行;OnStop方法在 停止服务时执行;还有两个重载方法:OnPause、OnContinue,分别在 暂停服务时执行、恢复服务时执行;它们对应于下图所示的操作:
(5)添加代码:
private Thread timerThread; /// <summary> /// 启动服务时执行 /// </summary> /// <param name="args"></param> protected override void OnStart(string[] args) { File.AppendAllText("D:\\1.txt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":windows服务开始工作!\r\n", Encoding.Default); timerThread = new Thread(new ThreadStart(Start)); timerThread.Start(); } /// <summary> /// 停止服务时执行 /// </summary> protected override void OnStop() { timerThread.Abort(); File.AppendAllText("D:\\1.txt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":windows服务结束工作!", Encoding.Default); } private void Start() { while (true) { using (StreamWriter writer = new StreamWriter("D:\\1.txt",true,Encoding.Default)) { writer.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":每十秒钟输出一次!"); } Thread.Sleep(10 * 1000); } }
(6)安装程序,设置属性
在设计器中添加安装程序
会生成一个ProjectInstaller.cs文件,如下图所示:
然后需要做两件事情:
①设置serviceProcessInstaller1控件的Account属性为“LocalSystem”
②设置serviceInstaller1组件的StartType属性为Automatic,把服务设置为自动启动
(7)启动服务
打开vs的开发人员命令提示 工具 以管理员身份运行
执行如下所示命令:
①进入到项目所在文件夹,并进入\bin\Debug\路径下
②安装服务命令:installutil ConsoleApplication.exe,然后就可以在服务列表中看到我们启动的服务:
卸载服务的命令是:installutil /u ConsoleApplication.exe
当我们修改代码后,需要把服务先卸载,才能重新生成成功
③启动服务
启动服务后,等一会儿再停止服务,然后我们打开D盘下的1.txt文档,可以看到下图所示的结果:
二、调试
在服务运行的状态下,我们找到菜单栏,调试——>附加到进程
注意勾选“显示所有用户的进程”,选项,找到我们的进程,点击附加,然后在程序中添加断点,就可以调试程序了!