处理服务启动时的异常

时间:2020-03-06 14:59:17  来源:igfitidea点击:

我正在编写一系列Windows服务。我希望它们在启动过程中引发错误时失败(在OnStart()方法中)。我以为只要在OnStart()中抛出一个错误就可以做到这一点,但是我发现它"启动了",并向我显示一条消息,指出"该服务已启动,但是处于非活动状态。这是正确的吗? " (短语)。我该如何处理错误,使其实际上无法启动服务?

解决方案

将所有启动逻辑移至单独的方法,然后从该单独的方法引发异常(或者调用OnStop)。

OnStart在启动时有一些奇怪之处。我发现如果OnStart()中的一行不超过一行,那么我不会收到"该服务已启动,然后停止了。如果某些服务没有工作,则这些服务会自动停止"消息,并且抛出的异常将终止处理并登录到应用程序事件日志。

同样,通过单独的启动方法,我们可以使用类似的技术来调试它,而无需添加。 http://www.codeproject.com/KB/dotnet/DebugWinServices.aspx

如果运行的是.NET 2.0或者更高版本,则可以使用ServiceBase.Stop从OnStart停止该服务。否则,从新线程调用Stop。

引用devnewsgroups

(新闻组走了)