9 Stimmen

Wie kann ich eine AppDomainUnloadedException nach NUnit-Tests des PLINQ-Codes verhindern?

Wie kann ich AppDomainUnloadedException diagnostizieren und minimieren oder verhindern?

NUnit 2.5.2 wirft konsistent AppDomainUnloadedException nach langen (> 10s) Tests mit PLINQ.

Zurück im Juli 2008 sagte Stephen Toub:

Ja, der Scheduler in der CTP verarbeitet Thread-Abbrüche nicht sehr gut, was oft dazu führt, dass der Prozess abstürzt, wenn ein aktiver Scheduler in einer Domäne existiert, die heruntergefahren wird (da das Herunterfahren der AppDomain Thread-Abbrüche auf allen Threads mit Stack-Frames in dieser Domäne verursacht). Wir arbeiten daran, dies für eine zukünftige Version zu verbessern.

Ich habe viele Workarounds ausprobiert, einschließlich:

  • Ausführen des Tests in einer separaten Methode, um Streuverweise zu beseitigen
  • Spezifizieren von /domain:None als NUNit-Argument
  • Entfernen des Elements legacyUnhandledAppDomainPolicy aus nunit-console.exe.config

Ich kann NUnit nicht zurückstufen, um die Chancen auf die Rennbedingung zu verringern, da ich PLINQ benötige, um meine parametrischen Tests schneller durchzuführen. Versionen von NUnit ohne das Problem unterstützen keine parametrischen Tests.

1voto

Laut diesem PLINQ-Thread zum Task-Manager in den MSDN-Foren sollte Ihr Problem gelöst sein; mit dem neuesten Release des .NET-Frameworks wurde der Task-Manager von PLINQ so angepasst, dass er sauber beim Entladen der AppDomain heruntergefahren wird.

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X