代码如此:
protected void Button1_Click(object sender, EventArgs e)
{
ThreadStart mythread = new ThreadStart(Create);
Thread thread = new Thread(mythread);
thread.Start();
Response.Write(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}
public void Create()
{
FileStream ds = File.Create(@"d:\1.txt");
StreamWriter sw = new StreamWriter(ds);
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
Thread.Sleep(5000);
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
sw.Close();
sw.Dispose();
ds.Close();
ds.Dispose();
}
执行结果如下:
页面结果返回时间
可以发现page处理返回后,thread子线程依然在运行,
问:thread子线程的主线程是哪一个,主线程的作用域多大,宿主环境是什么?该线程是IIS线程池的线程吗,改线程什么时候生,什么时候死,该线程与application对象所属的线程是什么关系。
Asp.net的宿主环境是IIS,w3wp.exe这个进程,内部是现成池,thread子线程的主线程就是响应请求的那个其中一个线程