应用程序启动时的线程安全
我有一个 ASP.NET 应用程序,我在 Application_OnStart 事件中编写此代码:
public virtual void OnStart(HttpApplication httpApplication)
{
MyClass.PopulateIndices();
}
现在,我知道 App_Onstart
仅触发一次,所以我的问题是:我是否需要在此添加线程安全性代码,例如:
lock(some object)
{
MyClass.PopulateIndices();
}
这个 lock()
真的需要吗?多个线程可以同时触发应用程序OnStart
吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您使用 .NET 4.0,我建议您只使用
serviceAutoStartProviders
:自动启动 ASP.NET 应用程序(VS 2010 和.NET 4.0系列)
I recommend you just
serviceAutoStartProviders
if you are using .NET 4.0 instead:Auto-Start ASP.NET Applications (VS 2010 and .NET 4.0 Series)
它只会被调用一次。确实。你那里不需要任何锁。
来自 MSDN:
来源:http://msdn.microsoft.com/en-us/library/ms178473 .aspx
It will be called just once. Definitely. You don't need any lock there.
From MSDN:
Source: http://msdn.microsoft.com/en-us/library/ms178473.aspx
我通过一些日志记录对此进行了测试,并且 Application_Start 仅执行一次(例如,Session_Start 在每个用户的会话启动时执行)。
你不需要锁。
I tested this with some logging and Application_Start is executed only once (while, for example, Session_Start is executed at every user' session start).
you won't need the lock.