ASP.Net页面中新起线程,页面关闭后线程会关闭吗?

  问题:如题,ASP.Net页面中新起线程,页面关闭后线程会关闭吗?

     为了验证这个问题可以做个试验,新建一个页面,在页面添加一个按钮,按钮的处理程序如下:

new Thread(() =>
        {
            Thread.Sleep(
5000);

            var stream 
= File.CreateText("c:\\test.txt");
            stream.WriteLine(
"Hello, World!");
            stream.Flush();
            stream.Close();
        }).Start();

 

  点击按钮后快速关闭页面,发现文件还是会生成(如果没有创建文件权限,会在事件查看器中看到一条错误消息)。

 

  试验得出的答案是不会?那么这是为什么呢?

  在win 2003下,当一个站点被第一次访问时,都会新起一个进程(w3wp)。而每个具体的会话就相当于这个进程的一个线程。每个会话结束仅仅是当前关联的线程结束,w3wp这个进程还在。因此尽管试验中页面关闭了,但新起线程需要的执行环境(w3wp还在),所以该线程还会继续执行。

posted @ 2010-07-07 14:01 FrogTan 阅读(477) 评论(0) 编辑 收藏