我寫了一個自動啓動並且狀態變爲「開始」的窗口服務。有時服務狀態會進入「開始」狀態,即使重新啓動系統後也無法恢復到「已啓動」狀態。它可能是由於代碼中的某些未處理的異常而發生的。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