2017-03-13 4 views
0

J'essaie de comprendre AppDomains.Décharger l'enfant AppDomain tue Parent

j'utiliser le code suivant pour exécuter l'application en cours une fois de plus dans un nouvel enfant AppDomain avec un argument:

AppDomain domain = AppDomain.CreateDomain("NewAppDomain", null); 
    domain.ExecuteAssemblyByName(currentAssembly.FullName, "argument"); 

Il fonctionne très bien, cependant, lorsque je tente de le décharger via AppDomain.Unload(domain);, il tue aussi Parent il a été appelé de.

Dans la sortie de débogage je peux voir les erreurs suivantes:

Exception thrown: 'System.Threading.ThreadAbortException' in mscorlib.dll 
Exception thrown: 'System.Threading.ThreadAbortException' in mscorlib.dll 
Exception thrown: 'System.Threading.ThreadAbortException' in TestAppDomain.exe 
Exception thrown: 'System.Threading.ThreadAbortException' in System.Windows.Forms.dll 
Exception thrown: 'System.AppDomainUnloadedException' in TestAppDomain.exe 

Je ne sais pas quelle est la question ici, comment puis-je décharger correctement cet enfant AppDomain sans tuer Parent?

+0

Comment le code de * déchargement * de 'AppDomain' ressemble-t-il? Avez-vous une exception? pourriez-vous s'il vous plaît partager le message d'erreur? –

+0

@ RonaldRink'd-fens ', je viens d'utiliser "AppDomain.Unload (domaine)", puis l'application se ferme avec exitcode 0, mais avant qu'il n'y ait "AppDomainUnloadedException" et "Threading.ThreadAbortException". Ajouté ceux-ci dans la question. – Puyebu

+0

Avez-vous réellement du code _après_ l'appel 'AppDomain.Unload' qui n'est pas appelé? –

Répondre

0

Le thread principal n'a pas été arrêté complètement avant que j'aie essayé de décharger le AppDomain. L'arrêt correct corrige l'erreur.