如果应用程序使用任务管理器关闭,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# 表单关闭事件会起作用吗?的主要内容,如果未能解决你的问题,请参考以下文章