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