0

首先,我知道“正确”的答案是不要在 ASP.NET Web 应用程序中执行后台线程。我们有充分的理由这样做,所以请接受它对我们的用例有意义的假设。

我们的后台处理通常受 CPU 限制(有时可能受 IO 限制)。通常需要 2 秒到 2 分钟(有时会更长,长达一个小时)。我们将后台工作人员的数量限制为服务器上核心数量的 1.5 倍。

我还假设最好在 ASP.NET 环境中使用现有的线程池。我的代码将限制线程数,但我猜最好从现有池中提取。

那么这就引出了一个问题,创建线程的最佳方法是什么?

  1. ThreadPool.QueueUserWorkItem
  2. HostingEnvironment.QueueBackgroundWorkItem()
  3. 任务运行()
  4. 还有什么?

HostingEnvironment.QueueBackgroundWorkItem() & Task.Run() 是否来自 ASP.NET 线程池?

4

0 回答 0