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 回答