如何使窗口服务在错误时重新启动
本文关键字:错误 重新启动 服务 何使 窗口 | 更新日期: 2023-09-27 18:14:35
我在windows 2008上有MSMQ。消息在私有队列中可用。我有一个WCF订阅者(用c#编写),它被安装为windows服务。现在的问题是,有时WCF订阅者会停止从Queue中挑选消息。如果我重新启动服务,它工作正常。现在我附加了IError
Handler来记录原因和异常。
现在要处理这个问题,我想做的是,我将设置恢复属性以在第一次失败时重新启动服务,现在的问题是如何从IErrorHandler class
的HandleError()
方法抛出错误?
请告诉我在窗口服务中抛出异常的最好方法,以便它可以重新启动
虽然解决异常的潜在原因可能更好,但在某些情况下实现快速失败方法当然是有效的。实际上,这种杀死以某种方式"有缺陷"的进程的能力对于容错的概念是至关重要的。
那么,让一个windows服务自杀:
void KillSelf()
{
try
{
// Code to close open connections/dispose
// of unmanaged resources etc
...
}
finally
{
Environment.Exit(1);
}
}
服务恢复选项应设置为自动重启。这将确保您的服务可以直接恢复。
据我所知,不能抛出异常来重新启动windows服务。
我通常封装一个try catch(带有日志记录),以防止任何异常导致服务崩溃,这与你所建议的相反。
可能是你可以捕获一个错误并停止服务(不确定)并配置服务在停止时重新启动?