如何使窗口服务在错误时重新启动

本文关键字:错误 重新启动 服务 何使 窗口 | 更新日期: 2023-09-27 18:14:35

我在windows 2008上有MSMQ。消息在私有队列中可用。我有一个WCF订阅者(用c#编写),它被安装为windows服务。现在的问题是,有时WCF订阅者会停止从Queue中挑选消息。如果我重新启动服务,它工作正常。现在我附加了IError Handler来记录原因和异常。

现在要处理这个问题,我想做的是,我将设置恢复属性以在第一次失败时重新启动服务,现在的问题是如何从IErrorHandler classHandleError()方法抛出错误?

请告诉我在窗口服务中抛出异常的最好方法,以便它可以重新启动

如何使窗口服务在错误时重新启动

虽然解决异常的潜在原因可能更好,但在某些情况下实现快速失败方法当然是有效的。实际上,这种杀死以某种方式"有缺陷"的进程的能力对于容错的概念是至关重要的。

那么,让一个windows服务自杀:

void KillSelf()
{
    try
    {
        // Code to close open connections/dispose 
        // of unmanaged resources etc
        ...
    }
    finally
    {
        Environment.Exit(1);
    }
}

服务恢复选项应设置为自动重启。这将确保您的服务可以直接恢复。

据我所知,不能抛出异常来重新启动windows服务。

我通常封装一个try catch(带有日志记录),以防止任何异常导致服务崩溃,这与你所建议的相反。

可能是你可以捕获一个错误并停止服务(不确定)并配置服务在停止时重新启动?