8

Windows Azureの役割が停止されるたびに、そのOnStop()メソッドが呼び出されます。呼び出される前にトリガーされるRoleEnvironment.Stoppingイベントがあることがわかりました。OnStop()MSDNによると、このイベントはロールクリーンシャットダウンコードに適した場所です。

2つの違いは何ですか?メソッドのオーバーライドStoppingではなく、イベントにロールクリーンシャットダウンコードを配置するのはなぜですか?OnStop()

4

3 に答える 3

4

イベントメカニズムがハンドラーをアタッチする柔軟な方法を提供するという事実に加えて、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イベントにそのような制限があることは記載されていませんが。

ソース:

于 2012-12-06T16:55:07.067 に答える
2

イベントを使用すると、他のクラスの他のサブスクライバーが何らかのアクションを実行できますが、メソッドを使用すると、自分などのサブクラスの作成者がそれを実際のクラスに配置して、(たとえば) 発生するイベントを変更できます。

于 2011-11-22T13:26:57.523 に答える
1

Brent Stineman (Windows Azure MVP) は最近、RoleEntryPoint と関連する開始/実行/停止シーケンスについてブログに書き、シーケンスの説明で停止と OnStop の両方について説明しています。

于 2011-11-22T14:47:15.853 に答える