像什麼@Daniel說,Response
可能已經被時間的線程運行終止。解決方案是在線程運行時保持連接處於活動狀態。我們可以通過分配和異步任務來完成這項工作。
protected void Page_Load(object sender, EventArgs e)
{
AddOnPreRenderCompleteAsync(new BeginEventHandler(Thread_BeginEvent), new EndEventHandler(Thread_EndEvent));
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
Response.Write(result);
}
private string result;
IAsyncResult Thread_BeginEvent(object sender, EventArgs e, AsyncCallback cb, object extraData)
{
WaitCallback w = new WaitCallback(Thread_DoWork);
return w.BeginInvoke(sender, cb, extraData, w);
}
void Thread_EndEvent(IAsyncResult ar)
{
WaitCallback w = ar.AsyncState as WaitCallback;
if(w != null)
w.EndInvoke(ar);
}
void Thread_DoWork(object state)
{
result = "";
for (int i = 0; i < 10; i++)
{
result += "Threading! <br/><br/>";
Thread.Sleep(500);
}
}
你可能想試試這個爲好,但我不知道它是否有效與否,但我懷疑這會:
void Thread_DoWork(object state)
{
for (int i = 0; i < 10; i++)
{
Response.Write("Threading! <br/><br/>");
Thread.Sleep(500);
}
}
它是如何崩潰的?有錯誤嗎?檢查EventLog並查看是否有任何內容。 – 2011-03-17 01:02:09