2010-07-05 69 views
0

有什么好的方法来处理C#中的强制退出?处理强制退出

我有一个无形的C#应用​​程序,通过串口与液晶显示器进行通话。一旦应用程序运行,杀死它的唯一方法就是使用任务管理器。这样做的麻烦在于程序在完成时需要关闭LCD,并且看起来好像我的Application.ApplicationExit事件在此情况下曾经被触发过。

任何想法?

回答

4

一旦应用程序运行,杀死它的唯一方法是使用任务管理器。

我的大想法是改变这一点。

在通知区域粘贴一个图标,用户可以使用该图标正确关闭应用,或者将其设置为再次运行应用,而不是关闭正在运行的实例(如果存在的话)或任何其他方式这听起来像一个好主意。

要求用户使用任务管理器关闭应用程序尖叫设计不佳。

+0

该应用程序并不打算永久关闭,它仅供我个人使用。我使用任务管理器的原因是因为当Windows以相同的方式关闭时,程序被强制关闭。 – chris12892 2010-07-05 00:30:25

+0

然后你可以尝试关闭关闭信号(使用'SystemEvents.SessionEnding')。 – 2010-07-05 00:48:17

+0

啊,好吧,那就是我一直在寻找的!谢谢! – chris12892 2010-07-05 01:45:38

0

在您的程序循环中编写代码(可能带有计时器)以读取文件或注册表项。例如,如果C:\ YOURPROGRAM \ CLOSEME中的文件包含文本“closeme”,请优雅地关闭程序。编写另一个写入C:\ YOURPROGRAM \ CLOSEME文件的程序。所以,只要你想关闭你的程序,不要使用taskmanager,而应该打开第二个程序。

0

一些选项:

  • 编写与可以启动和停止的主要处理的GUI一个单独的进程。例如,当您在Windows上安装Apache Web服务器时,服务器本身作为服务安装。它可以从系统服务管理面板启动和停止,但它还附带一个位于通知区域的“监视器”进程,告诉您Apache是​​否正在运行,并允许您手动启动或停止它。
  • 如果您的用例可以接受,请将该应用程序作为控制台应用程序。您可以注册一个处理程序,以便在用户按下CTRL + C(请参阅Console.CancelKeyPress)时执行清理操作,然后退出该进程。这仍然不会让你处理任何人从任务管理器中杀死进程,但它很容易做到,根据你的情况可能会足够好。
+0

两者都不会工作,因为... 1:当Windows关闭时,进程仍将被强制退出 2.它不适用于控制台应用程序。 – chris12892 2010-07-05 00:36:09