Ich arbeite an einem Fehler, bei dem Code nicht immer ausgeführt wird, bevor eine Anwendung heruntergefahren wird. Der Code befand sich in einem Handler für das AppDomain.CurrentDomain.DomainUnload-Ereignis.ProcessExit vs DomainUnload
ich einen Beitrag von jemandem mit dem gleichen Problem, die von der Zeit
“diesen Rat erhielt fand die DomainUnload Event für Ihre Standard-App Domain geschieht, Ihr Code ausgeführt wird beendet. Sie kann wahrscheinlich tun, was Sie brauchen mit dem ProcessExit-Ereignis in der Standard-AppDomain. "
Das funktionierte für mich, aber ich würde gerne wissen, warum. Ich habe nicht viel über diese Ereignisse oder über die Unterschiede zwischen ihnen herausgefunden. Ich frage mich auch, ob ich beide abonnieren muss oder der ProcessExit ausreicht.
EDIT:
Ich wollte mehr Informationen hinzuzufügen dies ein wenig nützlicher zu machen.
Ich habe ausgeschlossen, dass neue Threads in ihrer eigenen AppDomain erstellt wurden. Da ich wollte, dass dieser Code nicht nur dann ausgeführt wurde, wenn der Elternprozess abgeschlossen war, sondern auch, wenn jeder Thread fertig war, musste ich das DomainUnload-Ereignis abonnieren, um den Abschluss jedes Threads und das ProcessExit-Ereignis nach Beendigung des Elternprozesses zu verarbeiten.
[MSDN] (http://msdn.microsoft.com/en-us/library/system.appdomain.domainunload (v = vs.110) .aspx) sagt 'AppDomain.DomainUnload' Event" tritt auf, wenn eine AppDomain wird gerade entladen. " und soll von der 'AppDomain' verwendet werden, die entladen wird. –
@MehrdadAfshari: Es scheint, dass es nicht so ist: "daran erinnert werden, dass, nachdem das DomainUnload-Ereignis ausgelöst wird, Sie nie ein ProcessExit-Ereignis sehen werden, weil Ihre AppDomain bereits gegangen ist" - http://www.codeproject.com/Articles/16164/ Managed-Application-Herunterfahren –