2009-08-27 11 views
9

Come posso diagnosticare e minimizzare o prevenire AppDomainUnloadedException?Come posso evitare AppDomainUnloadedException dopo che NUnit ha testato il codice PLINQ?

NUnit 2.5.2 genera costantemente AppDomainUnloadedException dopo lunghi (> 10 s) test che coinvolgono PLINQ.

Già nel luglio del 2008, Stephen Toub said:

Sì, lo scheduler nel CTP non gestisce filo si interrompe molto bene, che fa sì che spesso il processo a bloccarsi quando esiste un programmatore dal vivo in un dominio essendo shutdown (dal momento che AppDomain shut down causa l'interruzione di thread su tutti i thread con frame stack in quel dominio). Stiamo lavorando per indurire lo per una versione futura.

Ho provato molte soluzioni, tra cui:

  • L'esecuzione del test in un metodo separato per eliminare i riferimenti randagi
  • Specificando /domain:None come argomento NUnit
  • Rimozione elemento legacyUnhandledAppDomainPolicy da nunit-console.exe.config

Non riesco a eseguire il backup di NUnit a reduce the odds of the race condition, poiché ho bisogno di PLINQ per rendere i miei test parametrici più veloci. Le versioni di NUnit senza il problema non supportano i test parametrici.

+0

vedere anche http://stackoverflow.com/questions/561402/cassini-webserver-webdev-nunit-and-appdomainunloadedexception per un problema correlato. Questo è probabilmente https://bugs.launchpad.net/nunitv2/+bug/423611 –

+1

Spesso questo problema è causato dallo smaltimento errato di oggetti istanziati durante l'avvio di un test, vedere se si stanno eliminando tutte le risorse nel modo giusto – sll

risposta

1

Secondo this PLINQ Task Manager thread on the MSDN forums, il problema deve essere risolto; con l'ultima versione del framework .NET, il Task Manager di PLINQ è stato quello di arrestare in modo pulito lo scaricamento di AppDomain.

Si sta ancora riscontrando questo problema con .NET 4 o 4.5?

Problemi correlati