Pergunta

Eu estou trabalhando em um bug onde o código sempre não está sendo executado antes de um aplicativo é desligado. O código foi em um manipulador para o evento AppDomain.CurrentDomain.DomainUnload.

Eu encontrei um post por alguém com o mesmo problema que recebeu este conselho

"No momento em que o evento DomainUnload acontece para o seu domínio de aplicativo padrão, o código parou de execução. Provavelmente, você pode fazer o que você precisa com o evento ProcessExit sobre o padrão AppDomain ".

Isso funcionou para mim, mas eu gostaria de saber por quê. Eu não tenho sido capaz de encontrar muito em qualquer um destes eventos ou as diferenças entre eles. Eu também estou querendo saber se eu preciso para se inscrever em ambos ou é o ProcessExit suficiente.

EDIT:

Eu queria adicionar mais informações para tornar este um pouco mais útil.

Eu deixei de fora que novos tópicos estavam sendo criados em seu próprio AppDomain. Desde que eu queria que este código seja executado, não só quando o processo pai foi feito, mas também quando cada thread terminou eu precisava assinar o evento DomainUnload de lidar quando cada thread terminou e também o evento ProcessExit a captura quando o processo pai terminou.

Foi útil?

Solução

ProcessExit deve ser suficiente.

O evento DomainUnload foi concebido para ser manuseado por outras AppDomains, não o AppDomain sendo descarregado. Como resultado, se o manipulador está anexado no domínio que está sendo descarregado, ele pode não funcionar. O evento ProcessExit é projetado para ser executado quando o processo é irá exit.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top