0

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 ロールの停止が発生すると、そのロールが同じプロセスで再実行されることはないと確信できますか?

4

1 に答える 1

1

おそらくできると思いますが、フラグをリセットするために使用できる OnStart 呼び出しもあるため、必要はありません。私は一般的に、自分が制御できないものに依存する必要がない場合 (それはたくさんあります!) に依存しないことを好みます。これは、個人的には避けたいものです。

于 2013-02-07T09:13:19.583 に答える