悬赏分:5 浏览:317 次
大家好,我在ASP.NET中用多线程时碰到了点问题:
我在页面中新建了一个线程(前台线程),但主线程仍然没有等我新建的线程执行结束后再结束,以下测试代码:
protected void Page_Load(object sender, EventArgs e)
{
Thread t = new Thread(new ThreadStart(CallThread));
t.IsBackground = false;
t.Start();
Response.Write("Main Thread");
}
protected void CallThread()
{
for (int i = 0; i < 100; i++)
{
Response.Write("Sub Thread:" + i+"<br>");
Thread.Sleep(1);
}
}
页面的最终输出是:
Sub Thread:0
Main Thread
而如果我把它放到终端应用程序下(只把输出语句改掉),那我就会得到以下结果:
Sub Thread:0
Main Thread
Sub Thread:1
...
Sub Thread:99
终端应用程序下的这个结果是我所期望的,但为什么在ASP.NET中却不一样呢?
请大家指点迷津!
|
3个月前 水言木 : @wsky 你是指虽然现在看起来子线程并没有在输出了Main Thread后继续执行,但事实上主线程并没有结束,子线程也仍然执行,但是因为页面已被主线程卸载,所以我已经看不到结果了,是这样么? |
|
3个月前 水言木 : @yeyang 我是单核的 |
|
3个月前 wsky : 嗯 差不多是这个意思 了解下webform的编程模型就会更清楚 |
|
2个月前 天好蓝-崇崇 : Response.Write已经让Page结束了,所以就没有再输出下面期望的结果了~~~ |