我正在编写一个asp.net应用程序,我意识到对于特定功能我使用了很多Task.Factory.StartNew();
而这些任务又会触发其他任务,如下所示:
public void StartTheWork()
{
Task.Factory.StartNew(() => DoSomething1());
Task.Factory.StartNew(() => DoSomething2());
Task.Factory.StartNew(() => DoSomething3());
}
此方法每2小时调用一次;它基本上是一种工人方法。这一切似乎都适用于我的本地机器,但我想知道我在同时运行大量任务时会冒多大的风险?
感谢。
答案 0 :(得分:3)
部署后最大的风险是在任务运行时应用程序池回收:
那么为什么这不是典型的每个请求ASP.NET代码的问题?当ASP.NET取消AppDomain时,它将尝试刷新现有请求,并在它关闭App Domain之前给它们时间完成。 ASP.NET和IIS考虑到他们知道正在运行的代码,例如作为请求的一部分运行的代码。 问题是,ASP.NET不知道在使用计时器或类似机制生成的后台线程上完成的工作。它只知道与请求相关的工作。