在ASP.NET MVC中,当应用程序启动时,我需要在后台进行一些连接(LDAP,...)。有没有办法在ASP.NET MVC应用程序中执行“线程安全”?
谢谢,
答案 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);
}