标签: c# windows-services
我正在用C#编写Windows服务。我希望在服务控制面板停止服务时采取相同的操作,就像关闭系统一样。我想对两种情况采取同样的行动。
我是否必须覆盖ServiceBase.OnShutdown(),或者在两种情况下都覆盖ServiceBase.OnStop()?
ServiceBase.OnShutdown()
ServiceBase.OnStop()
答案 0 :(得分:4)
是。机器关闭时会调用OnStop()。 OnShutdown()适用于需要特别了解机器正在关闭的情况。
OnStop()
OnShutdown()
答案 1 :(得分:0)
覆盖OnShutdown是正确的方法。 OnStop在关机期间不会被调用。
OnShutdown
OnStop
Microsoft Windows添加了一个名为Fast Startup的选项,该选项实际上并未关闭计算机。
Fast Startup
如Fast Startup设置说明中所述,Restart不受影响。这就是Restart触发OnShutdown而Shutdown不会触发的原因。
Restart
Shutdown
关闭Fast Startup会同时触发OnShutdown和Restart的{{1}}。