2011-10-05 150 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在每個用戶會話開始時執行)。

你不需要鎖。