以下是我在一個控制器動作做:爲什麼一個線程在ASP.NET MVC(再次)中被中止?
- 創建並啓動一個新的線程,做一個比較長的處理任務(平均約30秒,但可能是幾分鐘)
- 立即返回頁面響應,以便用戶知道處理已經開始(簡單地說,具有用於輪詢目的的任務ID的Json)。
在某個隨機點引發ThreadAbortException異常,所以異步任務沒有完成。每次都不會拋出異常,只是隨機發生大約25%的時間。
注意要點:
- 我沒有打電話或到Response.End Response.Redirect的 - 沒有,即使拋出異常的請求運行
- 我嘗試使用線程池和我同樣的行爲
- 我知道ASP.NET運行的線程有幾個注意事項,但我現在不
任何建議在乎嗎?
對不起Spencer,但我已經說過,我知道這是做異步處理的次優方式,但在我的情況下沒有別的辦法。 – 2010-04-28 16:22:26
不幸的是,它不是簡單的次優。這實際上是錯誤的,並不是爲這種使用而設計的。跟蹤確定如何阻止IIS終止長時間運行的線程的方法很可能會是一種無法預料的後果。如果沒有其他方式,那麼你的環境出現問題。 – 2010-04-28 20:21:56
我同意你的意見。無論如何,我想出了一種方法來產生一個過程,我只需要驗證它的工作。 – 2010-04-29 05:20:37