Windows Azureの役割が停止されるたびに、そのOnStop()
メソッドが呼び出されます。呼び出される前にトリガーされるRoleEnvironment.Stopping
イベントがあることがわかりました。OnStop()
MSDNによると、このイベントはロールクリーンシャットダウンコードに適した場所です。
2つの違いは何ですか?メソッドのオーバーライドStopping
ではなく、イベントにロールクリーンシャットダウンコードを配置するのはなぜですか?OnStop()
Windows Azureの役割が停止されるたびに、そのOnStop()
メソッドが呼び出されます。呼び出される前にトリガーされるRoleEnvironment.Stopping
イベントがあることがわかりました。OnStop()
MSDNによると、このイベントはロールクリーンシャットダウンコードに適した場所です。
2つの違いは何ですか?メソッドのオーバーライドStopping
ではなく、イベントにロールクリーンシャットダウンコードを配置するのはなぜですか?OnStop()
イベントメカニズムがハンドラーをアタッチする柔軟な方法を提供するという事実に加えて、OnStop
メソッドはから派生したクラスで直接定義する必要がありますがRoleEntryPoint
、1つの関連する違いは次のとおりです。
The Stopping event is not raised when the virtual machine of the role
instance is rebooted.
そのため、たとえば、ゲストOSのアップグレードのためにVMが再起動された場合、停止イベントは発生しません。
別の違いはこれです:
Code running in the OnStop method has 5 minutes to finish when it is called
for reasons other than a user-initiated shutdown.
ドキュメントには、Stoppingイベントにそのような制限があることは記載されていませんが。
ソース:
イベントを使用すると、他のクラスの他のサブスクライバーが何らかのアクションを実行できますが、メソッドを使用すると、自分などのサブクラスの作成者がそれを実際のクラスに配置して、(たとえば) 発生するイベントを変更できます。
Brent Stineman (Windows Azure MVP) は最近、RoleEntryPoint と関連する開始/実行/停止シーケンスについてブログに書き、シーケンスの説明で停止と OnStop の両方について説明しています。