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

发布于 2024-12-08 10:55:59 字数 407 浏览 2 评论 0 原文

我有一个 ASP.NET 应用程序,我在 Application_OnStart 事件中编写此代码:

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

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

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

这个 lock() 真的需要吗?多个线程可以同时触发应用程序OnStart吗?

I have an ASP.NET application in which I am writing this code in Application_OnStart event:

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

Now, I know that App_Onstart is fired only once, so my question is: do I need to add thread safety in this code, like:

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

Is this lock() really needed? Can multiple threads fire App OnStart simultaneously?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

注定孤独终老 2024-12-15 10:56:00

如果您使用 .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)

小鸟爱天空丶 2024-12-15 10:55:59

它只会被调用一次。确实。你那里不需要任何锁。

来自 MSDN:

Application_Start方法在生命周期中仅被调用一次
应用程序的周期。

来源: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:

The Application_Start method is called only one time during the life
cycle of an application.

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

開玄 2024-12-15 10:55:59

我通过一些日志记录对此进行了测试,并且 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文