日期:2014-05-17 浏览次数:20715 次
近段时间在做C#的项目,使用到了Windows Service.项目包括一个Windows Service工程,一个具体的业务处理工程(dll)
以及一个安装工程.现就这几天的使用心得做一下说明.
??? 1.Windows Service程序与一般程序的区别。
?Windows Service程序不能等同于一般的程序,直接调试或者运行是不起作用的。
??? 2.Windows Service程序的安装,卸载和启动。
??????? 要想运行一个Windows Service程序,首先必须将这个服务程序安装到Windows服务中去。如何安装,卸载和启动Windows Service程序呢?最常用的有2种方式。
?方式一就是使用framwork自带的InstallUtil命令以及net start命令。
??1) 安装Service: InstallUtil testService.exe
??2) 卸载Service: InstallUtil /u testService.exe
??3) 启动Service: net start "服务名称"(当然最简单的就是手动启动了^_^)
?方式二就是做一个安装工程。
?方式二的最大好处就是通过相关设定,安装完服务后立马注册Windows Service程序到Windows服务中去,下面我们就
?详细说明一下,如何实现这种处理方式。
??1) 为你的Windows Service工程(假设为:testService)添加一个安装工程(假设为:testServiceSetup)。
??2) 右键点击创建的安装工程(testServiceSetup)选择"追加"-->"项目输出",在"添加项目输出组"对话框中选择"主输出",
???? 在"项目"下拉框中选择需要主输出的服务程序即testService。
??3) 右键点击创建的安装工程(testServiceSetup)选择"视图"-->"自定义操作",右键点击"自定义操作"添加"自定义操作",
???? 选择应用程序文件夹中的主输出程序testService,此时在以下4个节点(安装,提交,回滚,卸载)中都添加了主输出程序testService。
??4) 编译安装。
?安装完毕后你创建的服务已经添加到Windows服务中去了。
??? 3.Windows Service调试。
?启动Visual Studio,打开你的testService project.选择菜单"调试->进程"。在进程窗口里附加你的服务程序testService.exe。如果你看不到你的
?testService.exe,请选中"显示所有会话中的进程".这样你才能看到以system账号运行的Service. 如果你已经设置了断点,当Serice运行到你设置的
?断点时,程序就会停下来等待你的调试。(说明:只有Debug模式下编译的testService.exe才可以进行调试)
??? 4.Onstart()的调试。
?1) 在方法Onstare()里设置System.Timers.Timer,然后用Timer来延迟启动服务。延迟的时间由你进入调试状态的时间来决定。可以设置为5秒。
??? 当然服务启动后应停止Timer(设置Timer.Enable=false).
?2) 参见前一篇blog(Debugging the OnStart Method)。?