長如何運行線程工作,所以我有MVC控制器方法中下面的代碼:內部Web應用程序
public ActionResult ProcessFile()
{
ThreadStart threadStart = new ThreadStart (()=>{
// Doing some long processing that takes 20 minute
});
Thread thread = new Thread(threadStart);
thread.Start();
}
這裏的問題是,當多個請求發送到該控制器方法的線程會被殺掉。 我需要線程來保持工作,直到處理結束,並且它似乎是一個資源問題,獲得的資源越多,線程可以保持工作的線程越少。 如果我從Windows應用程序或服務運行該過程它完美地工作,它只有從Web應用程序啓動時遇到問題。
如果一個對象......說'thread'超出範圍也可以是垃圾收集。我強烈建議使用'Task'來處理這樣的事情,因爲你不需要保留對它的引用。 – Mgetz
我使用了Task,出於某種原因,任務經常比Thread更頻繁地取消,即使當我將任務歸爲(長時間運行)時也是如此。 – sino
您是否試圖訪問該線程上的任何ASP.net上下文? – Mgetz