像什么@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