使用大量的Task.Factory.StartNew

时间:2014-08-13 19:01:45

标签: c# asp.net

我正在编写一个asp.net应用程序,我意识到对于特定功能我使用了很多Task.Factory.StartNew();而这些任务又会触发其他任务,如下所示:

public void StartTheWork()
{
    Task.Factory.StartNew(() => DoSomething1());       
    Task.Factory.StartNew(() => DoSomething2());
    Task.Factory.StartNew(() => DoSomething3());
}

此方法每2小时调用一次;它基本上是一种工人方法。这一切似乎都适用于我的本地机器,但我想知道我在同时运行大量任务时会冒多大的风险?

感谢。

1 个答案:

答案 0 :(得分:3)

部署后最大的风险是在任务运行时应用程序池回收:

  

那么为什么这不是典型的每个请求ASP.NET代码的问题?当ASP.NET取消AppDomain时,它将尝试刷新现有请求,并在它关闭App Domain之前给它们时间完成。 ASP.NET和IIS考虑到他们知道正在运行的代码,例如作为请求的一部分运行的代码。   问题是,ASP.NET不知道在使用计时器或类似机制生成的后台线程上完成的工作。它只知道与请求相关的工作

http://haacked.com/archive/2011/10/16/the-dangers-of-implementing-recurring-background-tasks-in-asp-net.aspx/