我有一个ASP.NET应用程序,我在Application_OnStart事件中编写此代码:
public virtual void OnStart(HttpApplication httpApplication)
{
MyClass.PopulateIndices();
}
现在,我知道App_Onstart
只被触发一次,所以我的问题是:我是否需要在此代码中添加线程安全性,例如:
lock(some object)
{
MyClass.PopulateIndices();
}
这真的需要lock()
吗?多个线程可以同时触发App OnStart
吗?
答案 0 :(得分:10)
它只会被调用一次。当然。你不需要任何锁定。
来自MSDN:
Application_Start方法在生命中只被调用一次 申请周期。
答案 1 :(得分:1)
我测试了一些日志记录,Application_Start只执行一次(例如,在每个用户的会话开始时执行Session_Start)。
你不需要锁。
答案 2 :(得分:1)
如果您使用的是.NET 4.0,我建议您只使用serviceAutoStartProviders
:
Auto-Start ASP.NET Applications (VS 2010 and .NET 4.0 Series)