9

如何诊断和最小化或预防AppDomainUnloadedException

NUnit 2.5.2AppDomainUnloadedException在涉及 PLINQ 的长时间(>10 秒)测试后始终抛出异常。

早在 2008 年 7 月,Stephen Toub 说

是的,CTP 中的调度程序不能很好地处理线程中止,当正在关闭的域中存在实时调度程序时,这经常会导致进程崩溃(因为 AppDomain 关闭会导致该域中具有堆栈帧的所有线程上的线程中止)。我们正在努力为未来的版本加强这一点。

我尝试了许多解决方法,包括:

  • 以单独的方法运行测试以消除杂散引用
  • 指定/domain:None为 NUUnit 参数
  • 从中删除legacyUnhandledAppDomainPolicy元素nunit-console.exe.config

我不能降级 NUnit 以降低竞争条件的几率,因为我需要 PLINQ 来使我的参数测试更快。没有问题的 NUnit 版本不支持参数测试。

4

1 回答 1

1

根据MSDN 论坛上的这个 PLINQ 任务管理器线程,您的问题应该得到解决;随着 .NET 框架的最新版本,PLINQ 的任务管理器已经在 AppDomain 卸载时干净地关闭。

您还在使用 .NET 4 或 4.5 遇到这个问题吗?

于 2011-10-05T20:02:18.687 回答