ApplicationPool类已停止事件

时间:2013-12-23 16:41:42

标签: c# asp.net .net iis-7.5

我使用ApplicationPool类的ApplicationPool.Stop方法通过C#代码停止应用程序池。这个方法停止了应用程序池,没关系。但问题是我想检测池何时停止,因为该方法需要一些时间才能使应用程序池处于停止状态。是否有任何事件我应该连接以检测应用程序池是否已停止?

编辑:我不能使用Global.asax(我停止应用程序池的站点),因为我正在从另一个应用程序停止应用程序池。

1 个答案:

答案 0 :(得分:2)

您可以SpinWait直到您的应用程序池停止。像这样:

ApplicationPool pool = //your pool here.
pool.Stop();
if (SpinWait.SpinUntil(() => pool.State == ObjectState.Stopped, TimeSpan.FromSeconds(30)))
{
    //The application pool has stopped
}
else
{
    //The application pool did not stop within 30 seconds.
    //An error probably occured.
}

您不必指定超时,但我强烈推荐它。如果不这样做,则可能会完全阻止您的其余过程。