我需要优雅地处理代码中的错误并停止服务。
protected override void OnStart(string[] args)
{
oMyObject = new MyObject(args);
if (oMyObject.RunStartup())
{
oThread = new Thread(new ThreadStart(oMyObject.MainLoop));
oThread.Start();
}
base.OnStart(args);
}
oMyObject.RunStartup() 将错误写入事件日志,如果出现错误则返回 false。
但是,服务并未停止,并且事件日志显示“服务已成功启动。”
如何在 OnStart() 中退出并停止服务而不让事件日志显示“服务已成功启动”?
最佳答案
您是否尝试过实现 OnStop()
方法,而不是尝试在 OnStart()
方法中检测停止?
然后您应该能够创建一个 ServiceController
实例并检查服务的 Status
属性。
编辑:抱歉,这是 @Lloyd 答案的扩展(无法发表评论)。
更新:
实际上考虑一下,只需在 OnStart()
中添加一个 Try
Catch
block 就足以捕获异常(请参阅@Oded评论 OP)并允许您关闭服务并按照您认为合适的方式记录到事件日志。
关于c# - 错误后如何停止服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13473196/