我阅读了Phil Haack关于使用IRegisteredObject
接口的文章,以确保后台线程在AppDomain关闭时完成,并将其实现到我的代码中。但是,我不完全确定如何模拟AppDomain崩溃以进行测试。如何模拟AppDomain崩溃?
答案 0 :(得分:9)
让AppDomain关闭的最简单方法是让父进程停止。在ASP.NET中,您可以通过回收或停止运行代码的应用程序池来完成此操作。我们有一些代码可以确保日志记录被刷新,这就是我过去测试它的方式。
至于完全崩溃,我不确定你怎么能这样做...托管环境捕获异常,因此可能不可行。您可以尝试Environment.Exit
或Environment.FailFast
这会强制父进程立即退出吗?
编辑: 我在这里忘记了最简单的选项...只需保存Web.config - 这将触发AppDomain回收!
有些候补......
如果您正在使用IIS运行,则可以从IIS管理器中回收应用程序池并执行以下步骤...
对于IIS Express,您只需右键单击托盘中的图标,然后在UI中就可以停止应用程序。
对于Visual Studio Development Server(Cassini),您还可以使用托盘来停止应用程序。