7

Application_OnStartイベントでこのコードを記述しているASP.NETアプリケーションがあります。

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

今、私はそれApp_Onstartが一度だけ発生することを知っているので、私の質問は次のとおりです:このコードにスレッドセーフを追加する必要がありますか?

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

これlock()は本当に必要ですか?複数のスレッドでアプリOnStartを同時に起動できますか?

4

3 に答える 3

10

一度だけ呼び出されます。間違いなく。そこにロックは必要ありません。

MSDNから:

Application_Startメソッドは、アプリケーションのライフサイクル中に1回だけ呼び出されます。

ソース: http: //msdn.microsoft.com/en-us/library/ms178473.aspx

于 2011-10-05T13:53:59.213 に答える
1

これをいくつかのログでテストしましたが、Application_Startは1回だけ実行されます(たとえば、Session_Startはすべてのユーザーのセッション開始時に実行されます)。

ロックは必要ありません。

于 2011-10-05T13:48:35.437 に答える
1

serviceAutoStartProviders代わりに.NET4.0を使用している場合は、次のことをお勧めします。

ASP.NETアプリケーションの自動起動(VS2010および.NET4.0シリーズ)

于 2011-10-05T13:48:40.663 に答える