Безопасность потоков при запуске приложения - PullRequest
7 голосов
/ 05 октября 2011

У меня есть приложение ASP.NET, в котором я пишу этот код в событии Application_OnStart:

public virtual void OnStart(HttpApplication httpApplication)
{
    MyClass.PopulateIndices();
}

Теперь я знаю, что App_Onstart запускается только один раз, поэтому мой вопрос:необходимо добавить безопасность потока в этот код, например:

lock(some object)
{
    MyClass.PopulateIndices();
}

Действительно ли это lock() необходимо?Может ли несколько потоков запускать приложение OnStart одновременно?

Ответы [ 3 ]

10 голосов
/ 05 октября 2011

Он будет вызван только один раз. Определенно. Тебе там не нужен замок.

Из MSDN:

Метод Application_Start вызывается только один раз в течение жизни цикл приложения.

Источник: http://msdn.microsoft.com/en-us/library/ms178473.aspx

1 голос
/ 05 октября 2011

Я рекомендую вам просто serviceAutoStartProviders, если вы используете вместо этого .NET 4.0:

Автозапуск приложений ASP.NET (VS 2010 и .NET 4.0 Series)

1 голос
/ 05 октября 2011

Я проверил это с некоторыми регистрациями, и Application_Start выполняется только один раз (в то время как, например, Session_Start выполняется при каждом запуске сеанса пользователя).

вам не понадобится замок.

...