2012-07-10 105 views
1

我有一個窗口服務,我想知道什麼時候不工作不是每個XX分鐘左右,但是當它停止當我的Windows服務無法正常工作

我有這個方法我如何知道

public string ServiceStatus() 
      { 
       switch (_service.Status) 
       { 
        case ServiceControllerStatus.Running: 
          return "Running"; 
        case ServiceControllerStatus.Stopped: 
          return "Stopped"; 
        case ServiceControllerStatus.Paused: 
          return "Paused"; 
        case ServiceControllerStatus.StopPending: 
          return "Stopping"; 
        case ServiceControllerStatus.StartPending: 
          return "Starting"; 
        default: 
          return "Status Changing"; 
       } 

      } 

對不起我的英文不好

回答

2

捕獲停止等事件。例如,要知道,當你被「停止」:

protected override void OnStop() 
{ 
    // Let yourself know the service has been stopped 
} 

退房ServiceBase以獲取更多信息。

2

當服務停止時,調用相應的服務OnStop方法。在這個函數內部,你可以寫一些事件日誌,或者發送消息給消息隊列。

需要知道服務是否正在運行的代碼,該代碼將不得不輪詢此共享源以知道服務何時停止。

這就是說,如果你能詳細說明你的問題,我們可以幫助你更好。諸如此類的信息,需要了解停止服務的代碼是什麼?如果它是一個Web應用程序,該服務可以在其OnStop期間進行http調用。

一般來說,它最好儘快讓OnStop退出。如果OnStop中的代碼耗時過長,則Windows可能會聲明服務無響應並導致不正常關閉。