如何在没有响应的情况下禁用关闭应用程序?

时间:2009-06-10 02:15:25

标签: visual-c++ mfc

如果应用程序没有响应时如何禁用关闭应用程序并等待它恢复?

6 个答案:

答案 0 :(得分:5)

你要问的不仅仅是不可能的(任何拥有足够权限的用户都可以终止进程......无论什么操作系统),这是一个糟糕的用户体验(UX)决定。

从用户的角度考虑一下。你坐在那里看着一个应用程序。该应用程序似乎没有做任何事情,并没有为您提供任何正在运行的视觉反馈。您认为该应用程序已挂起,您将重新启动它。

你可以做任何事情,从显示滚动进度条到让长时间运行的进程更新UI线程上的一些信息(想想安装中的安装程序......它会不断地告诉你它放在哪些文件中而不仅仅是让你等待)。在任何情况下,您都应该向用户提供一些视觉反馈,以便他们知道您的应用程序仍在运行。

答案 1 :(得分:2)

让GUI在一个单独的线程中工作,以便它(希望)永远不会“没有响应”。

答案 2 :(得分:2)

如果这是一个关于编程的问题,那么你的程序永远不应该处于那种状态,因为你已经以某种方式绑定了GUI线程。并且您不能(也不应该)阻止Windows或用户关闭您的程序。他们发现你的代码是垃圾,并且有权利将其强行扔出宝贵的地址空间。

在任何情况下,你的程序都忙于做其他事情 - 如果它无法响应用户,它可能也不会浪费时间保护自己。

在某些时候,开发人员需要通过计算机属于用户的厚头骨来获取它,而不是它们。

当然,如果您正在讨论如何配置Windows以防止此问题(例如在您的PC上),则此问题属于serverfault。

答案 3 :(得分:1)

如果您具有权限,则始终可以从任务管理器终止应用程序。您可以在应用程序窗口中禁用或不显示具有关闭图标和关闭菜单选项的系统菜单选项,但这不会阻止用户从前面提到的任务管理器终止它。相反,我只是在应用程序中显示一些繁忙的处理图标,以便用户了解正在发生的事情。

答案 4 :(得分:1)

别。无论您认为应用程序有多重要,用户控制自己系统的能力都更为重要。

答案 5 :(得分:0)

您唯一能做的就是禁用关闭按钮。用户仍然可以从任务管理器或类似工具中删除它,以解决这个问题。你可以通过将其作为一个特权进程启动来更难以杀死它,但这会带来更多问题。

相关问题