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?
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? –
@ 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
Avez-vous réellement du code _après_ l'appel 'AppDomain.Unload' qui n'est pas appelé? –