Azure ロールRoleEnvironment.Stopping
には、ロールが停止されているときに発生するイベントがあります。役割が停止されている場合に特別な処理が必要な、関連のないコードでいくつかの問題を発見しました。何かのようなもの:
public class SomeFarAwayClass {
void someFarAwayFunction()
if( roleIsBeingStopped ) {
workSpecially();
} else {
workUsually();
}
}
}
今、私はサブスクライブしRoleEnvironment.Stopping
、イベントハンドラーでroleIsBeingStopped
永続的に発生させたいと考えています。このようなもの:
public class SomeFarAwayClass {
//
private static bool roleIsBeingStopped = false;
public void SetBeingStopped() { roleIsBeingStopped = true; }
}
class MyRoleClass : RoleEntryPoint {
overribe bool OnStart()
{
RoleEnvironment.Stopping += stopping;
return base.OnStart();
}
void stopping(object sender, RoleEnvironmentStoppingEventArgs args)
{
SomeFarAwayClass.SetBeingStopped();
}
}
この解決策は、ロールが同じプロセスで再起動されないことを意味します。それ以外の場合は、ある時点でフラグをリセットする必要があります。これまでのところ、Azure ロールが同じプロセスで再起動されるのを見たことがありません。これは毎回新しいプロセスです。
Azure ロールの停止が発生すると、そのロールが同じプロセスで再実行されることはないと確信できますか?