7

我有一个 ASP.NET 应用程序,我在 Application_OnStart 事件中编写此代码:

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

现在,我知道App_Onstart它只被触发一次,所以我的问题是:我是否需要在这段代码中添加线程安全,例如:

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

lock()真的需要吗?多个线程可以OnStart同时触发App吗?

4

3 回答 3

10

它只会被调用一次。确实。你在那里不需要任何锁。

来自 MSDN:

Application_Start 方法在应用程序的生命周期中仅调用一次。

来源:http: //msdn.microsoft.com/en-us/library/ms178473.aspx

于 2011-10-05T13:53:59.213 回答
1

我用一些日志记录对此进行了测试,Application_Start 只执行一次(例如,Session_Start 在每个用户的会话开始时执行)。

你不需要锁。

于 2011-10-05T13:48:35.437 回答
1

serviceAutoStartProviders如果您使用的是 .NET 4.0,我建议您:

自动启动 ASP.NET 应用程序(VS 2010 和 .NET 4.0 系列)

于 2011-10-05T13:48:40.663 回答