如果应用程序使用任务管理器关闭,c# 表单关闭事件会起作用吗?

Posted

技术标签:

【中文标题】如果应用程序使用任务管理器关闭,c# 表单关闭事件会起作用吗?【英文标题】:Will c# form closing event work if the application is closed with task manager? 【发布时间】:2020-12-01 11:17:25 【问题描述】:

我有一个带有表单关闭事件的表单,该事件保存了应用程序的最后使用时间。

我的问题是'如果应用程序被任务管理器强制关闭,表单关闭事件是否仍然有效'?

【问题讨论】:

把它发挥到极致——如果有人拔掉电源插头,它会起作用吗?不,您不能依赖被调用的事件。在实践中,如果有人点击“结束任务”,它可能会被调用,但如果他们点击“结束进程”则不会被调用 有解决办法吗? 不,没有什么可以阻止某人终止您的进程。您可能希望在应用程序作为备份运行时定期记录上次使用时间 【参考方案1】:

简短的回答是否定的。当您的应用程序被任务管理器杀死时,位于您的 FormClosing 事件中的代码将永远不会被执行。

但是您可以通过其他方式捕获此事件。任务管理器调用 Windows API ExitProcess 来终止进程。您可以查看AppDomain 类的ProcessExit 和DomainUnload 事件。

对于 WinForms 应用程序,有 Application.ApplicationExit 事件。

也许这份文件也可以帮助你:

How to know when the Task Manager kills your app.

【讨论】:

以上是关于如果应用程序使用任务管理器关闭,c# 表单关闭事件会起作用吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何让delphi任务管理器失效,让程序无法关闭??

c#程序中,关闭窗口返回参数FormClosingEventArgs e的问题

c# winfrom应用程序关闭任务管理器中的进程

使用任务管理器关闭应用程序时停止 Android 服务

如何在应用程序被任务管理器杀死时保存数据?

如何强制关闭程序