如果I:
- 在网站根目录中放置
app_offline.html
- 停止IIS 7.5站点
- 停止IIS 7.5应用程序池
当前正在运行的线程(在所有三种情况下((包括后台线程(会发生什么?它们是立即终止,还是允许正在运行的项目结束?
感谢
Andrew
通过添加app_offline.htm应用程序发送Application_End
,在该函数返回后,程序的其余线程将被终止。等待Application_End
返回的最长等待时间在池设置中设置。
如果停止已满的池,则此池下的所有站点都将遵循相同的过程。如果只打开app_offline.htm,则仅此网站受影响。
为了避免线程因此关闭而终止,请在Application_End
上设置等待状态
void Application_End(object sender, EventArgs e)
{
// This is a custom function that you must make and
// check your threads in the program
MyTheadClass.WaitForAllMyThreadsToExist();
// after this function exit the rest of the threads are killed.
}
还有一个注意事项
在Application_End上等待线程从等待状态(可能是互斥体(退出的所有时间里,站点不再接受web连接,而且似乎没有响应。因此,当您收到此消息时,您应该让线程尽快退出。
只需注意文件名必须为app_offline.htm。使用app_offline.html将不起作用!
当app_offline.html被放入时:
根据ScottGu的这篇文章,它说应用程序域已卸载。基于本文,当卸载应用程序域并抛出ThreadAbortException时,所有后台线程都将停止。
我不确定是否要停止网站,但停止应用程序池也应该有同样的效果。