注意:代码编写完成后,你无法点击通过启动按钮或按F5来运行或调试服务,会弹出如下图所示的警告:

二、安装windows服务
项目生成成功后,定位到binDebug目录,以管理员身份运行Install.bat安装服务,成功结果如下图:

这时,“我的电脑”右键,选择“管理”,选择“服务和应用程序”下的“服务”,就可以看到服务已安装,如下图:

同时,Debug文件夹里有了Logs文件夹,Logs文件夹里有txt文档,内容如下:

可以看到,每分钟执行一次。
三、调试windows服务
1)通常的处理办法是,在service运行后, 在调试器中选择“附加到进程”,附加自己的服务即可调试。但此法有局限性,例如在service启动时的OnStart事件中的代码, 基本上很难调试,往往当attach到我们的service的时候,这部分代码已经执行过了。当然了,你可以让OnStart事件之前先睡个20s,趁着服务睡觉的时候赶紧“附加到进程”。System.Threading.Thread.Sleep(1000 * 20);
2)我的做法是,在OnStart事件的最开始部分加上“Debugger.Launch();”的调用, 当service运行到此处时,将会弹出一个选择调试器的对话框,同时暂停在当前位置。这样,我们就做到了在代码中手动的启动调试器。
说明:a)Debugger.Launch()方法的作用是“启动调试器并将其连接到进程”;
b)可以手动设置断点,也可以用“Debugger.Break();”动态设置断点;
c)为了避免多个调试器实例,可以用“Debugger.IsAttached”属性判断调试器是否已附加到进程,代码片段:
if (!Debugger.IsAttached) Debugger.Launch();
d)为了使调试只在Debug模式下生效,Release模式下无效,可以用条件编译来处理,代码片段如下:
#if DEBUG
if (!Debugger.IsAttached)
Debugger.Launch();
Debugger.Break();
#endif










