2015-06-27 2 views
4

Чтение через различные документы и блоги, похоже, что OnStart - это место для инициализации ваших объектов и вещей, которые вам нужны, прежде чем ваша роль начнет получать трафик. Непонятно, однако, если есть случай, когда OnStart можно вызывать более одного раза с использованием того же экземпляра класса рабочей роли?Роль Azure Worker - использование OnStart() против конструктора только для начала Инициализация

Например, у меня есть контейнер для инъекций и соединение с базой данных, которое должно быть создано только один раз. Мне нужно убедиться, что роль не может быть остановлена ​​и снова запущена, оставив все текущие объекты в памяти. В этом случае было бы лучше использовать конструктор роли пользователя для инициализации объектов.

ответ

5

OnStart() (член класса RoleEntryPoint и метод, который необходимо переопределить) вызывается только один раз в жизненном цикле экземпляра роли. Возвращается true, а затем Run(). Верните false, и экземпляр роли будет повторно использован (перезапущен).

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

FYI Here's more info о роли lifecycle.

+0

Спасибо ... Мне не ясно, можно ли снова запустить вызов в том же экземпляре, перезапустив роль с портала, когда произошла ошибка и т. Д., Но это отвечает на мой вопрос :) – KingOfHypocrites