這是一個多部分問題。ASP.NET HTTPHandlers和長時間運行的進程
我有一個過程,可能需要幾分鐘才能完成,它通過使用異步JavaScript請求調用HTTPHandler來運行。
問題1:如何確保此請求不會在服務器和客戶端上超時?
問題2:在最終頁面完成之前,是否可以從HTTPHandler發送數據,並將處理髮送回XmlHttpRequest對象?
我想計算實際工作量和完成回報百分比。我猜這是可能的。
任何提示?
編輯:
簡單的測試:
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
for (int i = 0; i < 100; i++)
{
context.Response.Write("Hello World " + i + Environment.NewLine);
System.Threading.Thread.Sleep(500);
context.Response.Flush();
}
}
推的Hello World一點一滴客戶端...這適用於synchronious要求,我會看到,如果一個XMLHttpRequest得到了readystatechange每條線的事件。
我一直在避免ASP.NET應用程序的多線程,因爲您無法控制工作進程何時會死亡,這將導致其所有生成的線程死亡。
相反,爲什麼重新發明一個單獨的線程池時,IIS已經爲你做了這個。
回答重新發明線程池...對於長時間運行的進程,不建議使用線程池。 http://msdn.microsoft.com/en-us/magazine/cc164128.aspx – Keltex 2009-03-05 23:46:39