【问题标题】:C# Windows Form Killed By Task Manager...Is There a Way to Run Shutdown Function?C# Windows 窗体被任务管理器杀死...有没有办法运行关机功能?
【发布时间】:2010-07-24 18:06:33
【问题描述】:

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

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

非常感谢您的两分钱!

【问题讨论】:

  • 如果进程被杀死,你觉得你还需要做什么?您的进程被杀死是有原因的。

标签: c# winforms process kill taskmanager


【解决方案1】:

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

正常关机时,Windows 会向每个打开的应用程序发送退出消息。您可以在收到消息后运行一些代码(通常是家务)并退出应用程序。这应该不会花很长时间,否则 Windows 会自动询问用户是否要终止该应用程序。

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2022-01-03
      • 1970-01-01
      • 2017-07-10
      • 2012-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-15
      相关资源
      最近更新 更多