1

Windows サービスがあり、xx 分ごとではなく、いつ停止したかを知りたい

私はこの方法を持っています

 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";
                }

          }

私の悪い英語でごめんなさい

4

2 に答える 2

2

サービスが停止すると、サービスの対応する OnStop メソッドが呼び出されます。この関数内で、何らかのイベント ログに書き込んだり、メッセージ キューにメッセージを送信したりできます。

サービスが実行されているかどうかを知る必要があるコード。そのコードは、サービスがいつ停止したかを知るために、この共有ソースをポーリングする必要があります。

とはいえ、質問について詳しく説明していただければ、より適切なサポートを提供できます。サービスの停止について通知する必要があるコードは何ですか? Web アプリの場合、サービスは OnStop 中に http 呼び出しを行うことができます。

一般に、OnStop をできるだけ早く終了させることをお勧めします。OnStop 内のコードに時間がかかりすぎると、Windows はサービスが応答していないと宣言し、不適切なシャットダウンを引き起こす可能性があります。

于 2012-07-10T12:23:50.220 に答える
2

停止などのイベントをキャプチャします。たとえば、いつ「停止」されているかを知るには、次のようにします。

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

詳細については、 ServiceBaseを参照してください。

于 2012-07-10T12:25:01.863 に答える