1

現在、バックグラウンドでいくつかのジョブを実行し続けるために Windows サービスを使用しています。これらのジョブは、Quartz.Net を介してスケジュールされます。通常、これらは長時間実行されるジョブであり、5 分から 15 分の範囲です。ジョブが現在実行中で、ユーザーが Windows サービスをシャットダウンしようとすると、例外がスローされます: Windows サービスはタイムリーに応答しませんでした。

実はWindowsServiceのOnShutdown()メソッドで、Quartz.Netもシャットダウンしようとしています。scheduler.Shutdown(true)を呼び出してスケジューラを停止し、実行中のジョブを待ちます。これを False にすると、Windows サービスは正常に停止しますが、実行中のジョブは不安定な状態になります。これについて私を助けてください。

4

1 に答える 1

6

サービスが合意された時間内に停止を完了しなかったため、このエラーが発生します。そのため、SCM は何らかの方法でハングしていると想定し、中止します。

操作を完了するのにさらに時間が必要であることを SCM に伝えるには、ハンドラーを呼び出しServiceBase.RequestAdditionalTime()ます。OnStop詳細については、http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicebase.requestadditionaltime.aspxを参照してください。

于 2013-04-21T18:44:08.190 に答える