3

これは非常に一般的なケースであると確信していますが、MSDN でそれについて多くを見つけることができません。

トランザクションを実行しているサービスがあり、停止要求を受け取ったときに、実際のプロセスが終了する前に現在のトランザクションを完了したことを確認したいとします。

ウィンドウが「停止」状態にあるように見えることは知っていますが、ServiceBase.OnStop メソッドからそれを制御する方法がわかりません。

停止要求を登録したらすぐに OnStop から戻る必要がありますか? その場合、実際に終了したことをどのように示しますか?

または、現在のトランザクションが完了するまで、ブロックして OnStop から戻らないようにする必要がありますか? (つまり、Windows は、OnStop の呼び出しと OnStop が戻るまでの間、サービスを自動的に "停止" 状態にします)

4

1 に答える 1

2

何らかの種類のスレッドでトランザクションを実行している場合は、OnStop でトランザクションが終了する (またはキャンセルされる) まで待つ必要があります。OnStop が返された場合は、停止などのフラグを立てるだけでなく、サービスを停止する必要があります。

于 2013-03-11T10:21:35.573 に答える