10

我正在处理一个错误,即在应用程序关闭之前并不总是执行代码。该代码位于 AppDomain.CurrentDomain.DomainUnload 事件的处理程序中。

我发现收到此建议的有同样问题的人的帖子

“当您的默认应用程序域发生 DomainUnload 事件时,您的代码已停止执行。您可能可以使用默认 AppDomain 上的 ProcessExit 事件执行您需要的操作。”

这对我有用,但我想知道为什么。关于这些事件中的任何一个或它们之间的差异,我都找不到太多。我还想知道我是否需要同时订阅这两者或者 ProcessExit 是否足够。

编辑:

我想添加更多信息以使其更有用。

我忽略了在它们自己的 AppDomain 中创建新线程。因为我希望这段代码不仅在父进程完成时运行,而且在每个线程完成时运行,我需要订阅 DomainUnload 事件来处理每个线程完成的时间,并且还要订阅 ProcessExit 事件来捕获父进程完成时的事件。

4

1 回答 1

13

ProcessExit应该足够了。

DomainUnload事件旨在由其他 AppDomain 处理,而不是AppDomain被卸载。因此,如果处理程序附加在正在卸载的域中,它可能不会运行。该ProcessExit事件旨在在进程将要退出时运行。

于 2009-06-24T23:12:58.023 回答