ASP.NET MVC中的线程安全

时间:2012-06-25 06:46:50

标签: c# asp.net-mvc thread-safety

在ASP.NET MVC中,当应用程序启动时,我需要在后台进行一些连接(LDAP,...)。有没有办法在ASP.NET MVC应用程序中执行“线程安全”?

谢谢,

2 个答案:

答案 0 :(得分:2)

你应该在AS.NET中avoid running background tasks。但是如果由于某种原因你需要这样做,你可以在Application_Start中启动一个新线程并执行这些任务。由于Application_Start只执行一次,因此该线程将运行一次(除非你配置一些计时器 - >你可能不应该这样做。)

另一方面,如果您需要从ASP.NET MVC控制器(在HTTP请求的上下文中运行)中使用此后台线程中完成的工作,您将需要正确的同步以确保初始化线程你从Application_Start开始已经完成了。根据您的具体情况,可能有不同的方法来实现这一目标。

答案 1 :(得分:0)

这里有一个示例,你需要这样做,基本上我们正在创建一个匿名delegate,它将Invoke启动连接的函数。

if(this.InvokeRequired)
{
    Invoke(new MethodInvoker( () => yourFunctionThatCreatesSomeConnections(Args)));
}
else
{
yourFunctionThatCreatesSomeConnections(Args);
}