我使用ApplicationPool类的ApplicationPool.Stop方法通过C#代码停止应用程序池。这个方法停止了应用程序池,没关系。但问题是我想检测池何时停止,因为该方法需要一些时间才能使应用程序池处于停止状态。是否有任何事件我应该连接以检测应用程序池是否已停止?
编辑:我不能使用Global.asax(我停止应用程序池的站点),因为我正在从另一个应用程序停止应用程序池。
答案 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.
}
您不必指定超时,但我强烈推荐它。如果不这样做,则可能会完全阻止您的其余过程。