我写了一个自动启动并且状态变为“开始”的窗口服务。有时服务状态会进入“开始”状态,即使重新启动系统后也无法恢复到“已启动”状态。它可能是由于代码中的某些未处理的异常而发生的。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。 有什么方法可以根据需要停止服务。如果我愿意,我肯定会将服务状态视为“已启动”或“已停止”。建议某种方式。
”在异步任务中,你可以做任何你想做的事 通过这样做你的服务将能够完成OnStart并从正确的开始移动到开始。这是好的... 但是我想停止从异步线程的服务,如果某个函数返回false或者有任何异常(处理或未处理)抛出。 – himanshu 2013-02-25 08:34:12