Visual c++ 当应用程序没有响应时,如何禁用关闭该应用程序?

Visual c++ 当应用程序没有响应时,如何禁用关闭该应用程序?,visual-c++,mfc,Visual C++,Mfc,如何在应用程序没有响应时禁用关闭,并等待其恢复?如果您有权限,可以随时从任务管理器终止应用程序。您可以仅禁用或不显示在应用程序窗口中具有关闭图标和关闭菜单选项的系统菜单选项,但这不会阻止用户从任务管理器终止它,如前所述。相反,我会在应用程序中显示一些繁忙的处理图标,以便用户了解正在发生的事情。让GUI在单独的线程中工作,这样它(希望)永远不会“没有响应” 你所问的不仅仅是不可能的(任何拥有足够特权的用户都可以终止一个进程……不管是什么操作系统),而是一个可怕的用户体验(UX)决定 从用户的角度考

如何在应用程序没有响应时禁用关闭,并等待其恢复?

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

让GUI在单独的线程中工作,这样它(希望)永远不会“没有响应”

你所问的不仅仅是不可能的(任何拥有足够特权的用户都可以终止一个进程……不管是什么操作系统),而是一个可怕的用户体验(UX)决定

从用户的角度考虑。你坐在那里看申请表。应用程序似乎没有做任何事情,也没有向您提供它正在工作的任何视觉反馈。您可能认为应用程序已挂起,应该重新启动它


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

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

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

在某种程度上,开发人员需要通过他们厚厚的头盖骨证明计算机属于用户,而不是他们


当然,如果您正在谈论如何配置Windows以防止出现这种情况(例如在您的PC上),那么这个问题属于serverfault。

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

您唯一能做的就是禁用关闭按钮。用户仍然可以通过任务管理器或类似的工具杀死它。你可以把它作为一个特权进程来启动,从而使杀掉它变得更加困难,但这本身就带来了更多的问题。

你不应该这样做。。。。我同意。如果你的程序“没有响应”,你就做错了。