Могу ли я быть уверенным, что после того, как роль роли «Лазурь» была поднята, роль никогда не повторяется в том же процессе?

В роли 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 перезапускались в одном и том же процессе, это новый процесс каждый раз.

Могу ли я быть уверенным, что после того, как роль роли «Лазурь» была поднята, роль никогда не повторяется в том же процессе?

0
nl ja de

1 ответы

Я думаю, что вы, вероятно, можете, но в то же время вам не нужно, потому что у вас также есть вызов OnStart, который вы могли бы использовать, чтобы повторно установить флаг. Я вообще предпочитаю не полагаться на вещь, находящуюся вне моего контроля, где мне не нужно (чего их много!), Это было бы одним, которого я бы избегал лично.

1
добавлено