2009-08-27 14 views
9

Jak mogę zdiagnozować i zminimalizować lub zapobiec AppDomainUnloadedException?Jak mogę zapobiec AppDomainUnloadedException po NUnit testuje kod PLINQ?

NUnit 2.5.2 konsekwentnie wyrzuca AppDomainUnloadedException po długich (> 10 s) testach z udziałem PLINQ.

W lipcu 2008 roku, Stephen Toub said:

Tak, planista w CTP nie obsługuje wątek przerywa bardzo dobrze, co często powoduje procesu awarię gdy istnieje żywo scheduler w domenie bycie wyłączonym (od czasu zamknięcia AppDomain powoduje przerwanie wątku we wszystkich wątkach z ramkami stosu w tej domenie). Pracujemy nad tym, aby utwierdzić to w przyszłym wydaniu.

próbowałem wiele obejścia, w tym:

  • Uruchamianie testu w odrębnym sposobem wyeliminowania bezpańskich referencje
  • Określanie /domain:None jako argument NUnit
  • usunięcie elementu legacyUnhandledAppDomainPolicy z nunit-console.exe.config

Nie mogę ponownie dodać NUnit do reduce the odds of the race condition, ponieważ potrzebuję PLINQ, aby moje testy parametryczne działały szybciej. Wersje NUnit bez problemu nie obsługują testów parametrycznych.

+0

patrz również http://stackoverflow.com/questions/561402/cassini-webserver-webdev-nunit-and-appdomainunloadedekspres dla pokrewnego problemu. Jest to prawdopodobnie https://bugs.launchpad.net/nunitv2/+bug/423611 –

+1

Często taki problem jest spowodowany nieprawidłowym utylizacją obiektów utworzonych podczas uruchamiania testowego, sprawdź, czy wszystkie zasoby zostały poprawnie usunięte. – sll

Odpowiedz

1

Zgodnie z this PLINQ Task Manager thread on the MSDN forums, twój problem powinien zostać rozwiązany; z najnowszą wersją platformy .NET, Menedżer zadań PLINQ został całkowicie zamknięty przy rozładowywaniu AppDomain.

Czy nadal występuje ten problem z .NET 4 lub 4.5?

Powiązane problemy