2009-08-27 2 views
9

Wie kann ich AppDomainUnloadedException diagnostizieren und minimieren oder verhindern?Wie kann ich AppDomainUnloadedException verhindern, nachdem NUnit den PLINQ-Code getestet hat?

NUnit 2.5.2 löst nach langen (> 10s) Tests mit PLINQ konsistent AppDomainUnloadedException aus.

Bereits im Juli 2008 Stephen Toub said:

Ja, der Planer in dem CTP nicht Thread Griff bricht sehr gut, die der Prozess häufig zum Absturz bringt, wenn ein Live-Scheduler in einer Domäne vorhanden sind shutdown (seit AppDomain Herunterfahren verursacht Threadabbrüche auf allen Threads mit Stack-Frames in dieser Domäne). Wir arbeiten daran, das für eine zukünftige Version zu härten.

Ich habe versucht, viele Abhilfen, einschließlich:

  • den Test in einem separaten Verfahren Laufstreu Referenzen von nunit-console.exe.config
  • Angeben /domain:None als nUnit Argument
  • Entfernen des legacyUnhandledAppDomainPolicy Element zu beseitigen

Ich kann NUnit nicht aufzurückgraden, da ich PLINQ brauche, um meine parametrischen Tests schneller zu machen. Versionen von NUnit ohne das Problem unterstützen keine parametrischen Tests.

+0

siehe auch http://stackoverflow.com/questions/561402/cassini-webserver-webdev-nunit-and-appdomainunloadedexception für ein ähnliches Problem. Dies ist wahrscheinlich https://bugs.launchpad.net/nunitv2/+bug/423611 –

+1

Oft wird ein solches Problem durch falsches Entsorgen von Objekten verursacht, die während eines Test-Starts instanziiert wurden, um zu sehen, ob Sie alle Ressourcen ordnungsgemäß entsorgen – sll

Antwort

1

Nach this PLINQ Task Manager thread on the MSDN forums sollte Ihr Problem gelöst werden; Mit der neuesten Version von .NET Framework wurde der Task-Manager von PLINQ so eingestellt, dass er beim Entladen von AppDomain sauber heruntergefahren wird.

Sind Sie immer noch auf dieses Problem mit .NET 4 oder 4.5?

Verwandte Themen