如何诊断和最小化或预防AppDomainUnloadedException
?
NUnit 2.5.2AppDomainUnloadedException
在涉及 PLINQ 的长时间(>10 秒)测试后始终抛出异常。
早在 2008 年 7 月,Stephen Toub 说:
是的,CTP 中的调度程序不能很好地处理线程中止,当正在关闭的域中存在实时调度程序时,这经常会导致进程崩溃(因为 AppDomain 关闭会导致该域中具有堆栈帧的所有线程上的线程中止)。我们正在努力为未来的版本加强这一点。
我尝试了许多解决方法,包括:
- 以单独的方法运行测试以消除杂散引用
- 指定
/domain:None
为 NUUnit 参数 - 从中删除
legacyUnhandledAppDomainPolicy
元素nunit-console.exe.config
我不能降级 NUnit 以降低竞争条件的几率,因为我需要 PLINQ 来使我的参数测试更快。没有问题的 NUnit 版本不支持参数测试。