【发布时间】:2013-07-17 13:16:58
【问题描述】:
所以我在 MVC 控制器方法中有以下代码:
public ActionResult ProcessFile ()
{
ThreadStart threadStart = new ThreadStart ( ()=>{
// Doing some long processing that takes 20 minute
} );
Thread thread = new Thread(threadStart);
thread.Start();
}
这里的问题是,当向这个控制器方法发送多个请求时,线程会被杀死。 我需要 Thread 继续工作直到处理结束,这似乎是一个资源问题,占用的资源越多,线程可以继续工作的越少。 如果我从 Windows 应用程序或服务运行该进程,它可以完美运行,只有从 Web 应用程序启动时才会出现问题。
【问题讨论】:
-
如果一个对象...比如
thread超出范围,它可能会被垃圾回收。我强烈建议您使用Task来处理此类事情,因为您不需要保留对它的引用。 -
我使用了 Task ,由于某种原因,Tasks 比 Thread 更频繁地被取消,即使我将 Task 归因于(长时间运行)。
-
您是否尝试访问该线程上的任何 ASP.net 上下文?
-
nop ,所有的过程都是分析数据并将它们存储在 csv 文件中。
-
该线程中是否抛出异常?
标签: c# asp.net asp.net-mvc iis-7 threadpool