我在 C# 中有一个 Windows 服务。运行1-2天后(不具体),服务停止(它实际上并没有停止,但它没有处理任何东西。服务状态仍然是“已启动”,我需要手动重新启动服务,然后它才能再次工作)。
记录的异常是“外部组件已引发异常”。这发生在第三方控件中。
我希望服务继续运行而不会停止,因为在生产中,除非特定功能停止,否则没有人会检查服务是否正在启动/处理。
我已经准备好了所有的 TRY..CATCH。
任何建议,即使发生上述错误,我如何确保服务继续?
我在 C# 中有一个 Windows 服务。运行1-2天后(不具体),服务停止(它实际上并没有停止,但它没有处理任何东西。服务状态仍然是“已启动”,我需要手动重新启动服务,然后它才能再次工作)。
记录的异常是“外部组件已引发异常”。这发生在第三方控件中。
我希望服务继续运行而不会停止,因为在生产中,除非特定功能停止,否则没有人会检查服务是否正在启动/处理。
我已经准备好了所有的 TRY..CATCH。
任何建议,即使发生上述错误,我如何确保服务继续?
请改用此 try-catch 构造。
try{
}catch{
}
http://www.java2s.com/Code/CSharp/Language-Basics/Usethecatchallcatchstatement.htm
你可能想尝试在你的 catch 块中做这样的事情:
public static void RestartService(string serviceName, int timeoutMilliseconds)
{
ServiceController service = new ServiceController(serviceName);
try
{
int millisec1 = Environment.TickCount;
TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);
service.Stop();
service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
// count the rest of the timeout
int millisec2 = Environment.TickCount;
timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds - (millisec2-millisec1));
service.Start();
service.WaitForStatus(ServiceControllerStatus.Running, timeout);
}
catch
{
// ...
}
}
如果 RestartService 失败,您可以一起停止您的服务。代码示例在这里