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
,它在进程关闭开始时完成。或者,调用者可以调用库中的静态方法(NotifyProcessShutdown
或 PerformProcessShutdownCleanup
)。
在.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
我想在进程关闭时在库中进行一些清理,DotNet Core 替代方案是什么?在 .Net Framework 4 中,我使用了 AppDomain.CurrentDomain.ProcessExit.
由于您的代码在库中,您可以让库的调用者提供通知。这样主持人就可以决定通知你了。
通常情况下,库不应扰乱进程全局状态。它不应该对它的托管环境有太多假设。
也许调用者可以传递一个 Task
,它在进程关闭开始时完成。或者,调用者可以调用库中的静态方法(NotifyProcessShutdown
或 PerformProcessShutdownCleanup
)。
在.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