C#Windows窗体被任务管理器杀死…有没有办法运行关机function?

我怀疑这甚至是可能的。 所以你的应用程序正在运行,用户决定通过任务管理器结束进程。 在process.kill期间是否有方法/操作来保存数据? 我怀疑有,但我不得不问。

此外,如果用户关闭/重新启动PC(如在Windows更新/手动重启中),应用程序将执行什么操作? Window_Unloaded? 在第二个问题上,我想找到一种方法来确保我的应用程序不会显示为“如果您想重新启动,杀死此应用程序”的情况并希望保存所需的数据。

你的两分钱非常感谢!

除非你有两个过程,否则不可能做你想做的事情; 一个监控另一个人的状态,并在终止时做一些事情。 监视程序进程可能是没有GUI的Windows服务应用程序。

当正常关闭发生时,Windows会向每个打开的应用程序发送退出消息。 您可以在收到消息后运行一些代码(通常是内务处理的东西)并退出应用程序。 它不应该花很长时间,否则Windows会自动询问用户是否要杀死该应用程序。

强制关闭会立即终止所有进程(无特定/可预测的顺序)。 所以你不能(轻松)检测到它。

我建议你尽快保存所需的一切,以防止在应用程序进程被杀死时数据丢失。

如果有什么东西终止你正在运行的应用程序,那么你就没有机会做任何事情,只是死掉。 您修改应用程序,以便所有数据始终保存到某个持久位置,因此如果应用程序死亡,则保留的数据仍然存在。 显然你必须为此设计。 然后,如果用户执行“保存”,则您将提交“真实”数据存储。

如果Windows要重新启动,它应该向您的应用程序发送一条消息,您可以处理该消息。 但是不确定这是否适用于所有GUI /控制台/服务类型的应用程序。