AppDomain.CurrentDomain.ProcessExit 事件的 DotNet Core 替代方案是什么?

What is the DotNet Core alternative to AppDomain.CurrentDomain.ProcessExit event?

我想在进程关闭时在库中进行一些清理,DotNet Core 替代方案是什么?在 .Net Framework 4 中,我使用了 AppDomain.CurrentDomain.ProcessExit.

由于您的代码在库中,您可以让库的调用者提供通知。这样主持人就可以决定通知你了。

通常情况下,库不应扰乱进程全局状态。它不应该对它的托管环境有太多假设。

也许调用者可以传递一个 Task,它在进程关闭开始时完成。或者,调用者可以调用库中的静态方法(NotifyProcessShutdownPerformProcessShutdownCleanup)。

在.NET-Core中没有AppDomain.CurrentDomain.ProcessExit的替代方法,使用相同的事件。

但是,如果你想在库中进行清理,我推荐以下两种方法之一:

  • void Shutdown()(或类似的东西)添加到主应用程序将调用的库接口。
  • 在您的库中使用 IDisposable,这样库可以在处理后自行清理。

然后,主应用程序将使用 AppDomain.CurrentDomain.ProcessExit 并触发上述机制之一。

自 .net core 2.0 以来它又回来了https://docs.microsoft.com/en-us/dotnet/api/system.appdomain.processexit?view=net-5.0