在NUnit测试PLINQ代码后,如何防止AppDomainUnloadedException?

时间:2009-08-27 10:28:48

标签: .net nunit appdomain plinq parallel-extensions

如何诊断,最小化或阻止AppDomainUnloadedException

在涉及PLINQ的长(> 10s)测试后,NUnit 2.5.2始终抛出AppDomainUnloadedException

早在2008年7月,Stephen Toub said

  

是的,调度程序在   CTP不能很好地处理线程中止,这经常导致   当域中存在实时调度程序时崩溃的过程   shutdown(因为AppDomain关闭会导致所有线程中止   该域中具有堆栈帧的线程)。我们正努力变硬   这是为了将来的发布。

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

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

我无法将NUnit备份到reduce the odds of the race condition,因为我需要PLINQ才能使参数测试更快。没有问题的NUnit版本不支持参数测试。

1 个答案:

答案 0 :(得分:1)

根据this PLINQ Task Manager thread on the MSDN forums,您的问题应该得到解决;使用最新版本的.NET框架,PLINQ的任务管理器已经在AppDomain卸载时干净地关闭。

您是否仍在使用.NET 4或4.5遇到此问题?