Application Start上的线程安全

时间:2011-10-05 13:44:30

标签: c# asp.net locking application-start

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

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

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

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

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

3 个答案:

答案 0 :(得分:10)

它只会被调用一次。当然。你不需要任何锁定。

来自MSDN:

  

Application_Start方法在生命中只被调用一次   申请周期。

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

答案 1 :(得分:1)

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

你不需要锁。

答案 2 :(得分:1)

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

Auto-Start ASP.NET Applications (VS 2010 and .NET 4.0 Series)