2011-10-05 149 views
6

我有一个ASP.NET应用程序中,我在Application_OnStart事件编写这些代码:线程安全

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

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

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

这是lock()真正需要的?多个线程可以同时启动App OnStart吗?

回答

9

将只调用一次。当然。你不需要任何锁。

从MSDN:

Application_Start方法中被称为应用程序的生命周期 期间仅一次。

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

+0

如果我使用相同的应用程序的文件夹了几个网站,但它仍然被调用一次?我怎样才能重现这一点? –

1

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

你不需要锁。