dea*_*dob 9 c# linux windows .net-core asp.net-core
我正在移植到.NET核心,现有的应用程序已经挂钩win32调用SetConsoleCtrlHandler来捕获应用程序关闭,以便它可以干净地关闭打开的数据库文件和其他有序的关闭任务.
我需要在.NET核心中做同样的事情,我能看到的唯一选择是通过挂钩到IApplicationLifetime ApplicationStopping.Register来使用ASP.NET.但是,如果最终用户或系统终止win32呼叫将控制的控制台应用程序(例如,系统重启),则仅捕获Ctrl-C并且不起作用.
另一个选项是通过AppDomain(AppDomain.CurrentDomain.ProcessExit),但是在dotnet Core中没有AppDomain.
有序的应用程序关闭很重要,我担心生产系统中的数据损坏,因此需要实现等效的东西,新的应用程序将在Windows和Linux操作系统的混合上运行.
我是否错过了dotnet核心中的功能?或者我是否必须重新实现win32关闭钩子以及Linux上的等效物?
该AppDomain.CurrentDomain.ProcessExit活动现已在 .NET Core 2.0 中提供,我可以确认它在 Linux 上运行良好。在 .NET Core 2.0 之前,AssemblyLoadContext.Default.Unloading可能是一个可行的替代方案。
| 归档时间: |
|
| 查看次数: |
2661 次 |
| 最近记录: |