我正在处理一个错误,在应用程序关闭之前,代码并不总是被执行.代码位于AppDomain.CurrentDomain.DomainUnload事件的处理程序中.
我发现有同样问题的人收到这个建议的帖子
“当您的默认应用程序域发生DomainUnload事件时,您的
代码已停止执行.你可以做你所需要的
ProcessExit事件在默认的AppDomain上.
这对我有用,但我想知道为什么.我对这些事件中的任何一个或它们之间的差异都无法找到很多.我也想知道我是否需要订阅这两个或者是ProcessExit足够了.
编辑:
我想添加更多信息,使其更有用.
我没有在自己的AppDomain中创建新的线程.因为我希望这个代码不仅在父进程完成时运行,而且每个线程完成后,我需要订阅DomainUnload事件来处理每个线程完成以及当父进程完成时捕获的ProcessExit事件.
解决方法
ProcessExit应该足够了
DomainUnload事件设计为由其他AppDomains处理,而不是AppDomain被卸载.因此,如果处理程序附加在卸载的域中,则可能无法运行. ProcessExit事件旨在在进程退出时运行.