app_offline.htm,停止IIS站点和停止应用程序池如何影响当前正在运行的线程?

And*_*ock 3 asp.net iis-7

如果我:

  • app_offline.html在网站上放一个根
  • 停止IIS 7.5站点
  • 停止IIS 7.5应用程序池

当前运行的线程(在所有三种情况下)包括后台线程会发生什么?它们是否都立即终止,或者正在运行?

谢谢

安德鲁

Ari*_*tos 7

通过添加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.
}
Run Code Online (Sandbox Code Playgroud)

再说一遍.

一直等待Application_End让你的线程退出等待状态(可能是互斥锁),该网站不再接受网络连接,似乎没有响应.因此,当您收到此消息时,由您决定是否尽快退出线程.