C# 应用程序启动时的线程安全

C# 应用程序启动时的线程安全,c#,asp.net,locking,application-start,C#,Asp.net,Locking,Application Start,我有一个ASP.NET应用程序,在其中我正在应用程序启动事件中编写以下代码: public virtual void OnStart(HttpApplication httpApplication) { MyClass.PopulateIndices(); } 现在,我知道App\u Onstart只启动一次,所以我的问题是:我是否需要在这段代码中添加线程安全性,比如: lock(some object) { MyClass.PopulateIndices(); } 这真的需

我有一个ASP.NET应用程序,在其中我正在应用程序启动事件中编写以下代码:

public virtual void OnStart(HttpApplication httpApplication)
{
    MyClass.PopulateIndices();
}
现在,我知道
App\u Onstart
只启动一次,所以我的问题是:我是否需要在这段代码中添加线程安全性,比如:

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

这真的需要锁吗?多线程能否同时启动应用程序
OnStart

我通过一些日志记录对此进行了测试,应用程序启动只执行一次(例如,会话启动在每个用户的会话启动时执行)


您不需要锁。

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


它只会被调用一次。肯定那里不需要锁

从MSDN:

应用程序启动方法在生命周期内只调用一次 应用程序的周期


来源:

如果我在几个网站上使用同一个应用程序的文件夹,它仍然调用过一次会怎么样?我如何复制这个?