我编写了一个自动启动的 Windows 服务,状态变为“已启动”。有时服务状态会进入“启动”状态,即使在重新启动系统后也无法恢复到“启动”状态。这可能是由于代码中一些未处理的异常而发生的。
public partial class EngineHostService : ServiceBase
{
internal static ServiceHost _serviceHost = null;
public EngineHostService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
try
{
if (_serviceHost != null)
_serviceHost.Close();
_serviceHost = new ServiceHost(typeof(EngineService.Engine));
_serviceHost.Open();
}
catch (Exception ex)
{
ErrorHandler.LogEvent(ex.Message);
}
}
protected override void OnStop()
{
if (_serviceHost != null)
{
_serviceHost.Close();
_serviceHost = null;
}
}
}
在上面的代码中,当 Engine 类的构造函数执行时,它会抛出一些异常。我想停止服务: 1- 如果抛出一些异常。2-如果我在构造函数中调用的任何函数返回 false。有什么方法可以按我的意愿停止服务。如果我这样做,我肯定服务状态为“已启动”或“已停止”。建议一些方法。