c# - ProcessExit 与 DomainUnload

标签 c# .net appdomain

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

我找到了一个有同样问题的人的帖子,他收到了这个建议

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

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

编辑:

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

我忽略了新线程是在它们自己的 AppDomain 中创建的。由于我希望此代码不仅在父进程完成时运行,而且在每个线程完成时运行,因此我需要订阅 DomainUnload 事件以在每个线程完成时处理以及 ProcessExit 事件以在父进程完成时捕获。

最佳答案

ProcessExit 应该足够了。

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

关于c# - ProcessExit 与 DomainUnload,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1041435/

相关文章:

C# 正则表达式仅在标签外部替换字符串

c# - 如何计算转弯方向

.net - 为多语言 ASP.NET 网站动态生成的句子

c# - 将文件保存到虚拟目录

c# - 任何基于 WPF 的 Markdown 渲染器?

创建、重命名或删除文件夹时 ASP.NET 重新启动

c# - 使用 SocketAsyncEventArgs 的异步套接字操作超时

c# - 如何正确设置 IIS 7 应用程序池标识?

c# - 将程序集加载到新的 AppDomain 中以进行静态类/方法调用时出现问题

c# - 应用程序域级模拟