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 角色停止,该角色就不会在同一进程中重新运行吗?