确实,您的实例将在每次配置更改后通过 OnStop / (Reboot) / OnStart / Run。例如,如果您将应用程序中的设置存储在静态变量中,那么让这种情况发生可能是一件好事。这样,重新启动后,您的应用程序将重新启动,并且有机会重新初始化静态变量中的所有设置。
另一方面,如果您希望实例重新启动,您可以自己处理此更改(也许您将设置缓存在某处,或者在没有这些设置的情况下初始化静态对象)。您需要通过处理RoleEnvironment.Changing事件来触发重启:
public override bool OnStart()
{
RoleEnvironment.Changing += RoleEnvironmentChanging;
return base.OnStart();
}
private void RoleEnvironmentChanging(object sender, RoleEnvironmentChangingEventArgs e)
{
if ((e.Changes.Any(change => change is RoleEnvironmentConfigurationSettingChange)))
{
e.Cancel = true;
}
}