【问题标题】:Suppress Application not responding message [closed]抑制应用程序不响应消息[关闭]
【发布时间】:2019-04-02 07:35:53
【问题描述】:

我正在 Windows Server 2008 R2 中运行 Delphi Windows 应用程序,它将向 Windows 服务发起请求以填充数据。执行此任务时,应用程序将忙于应用程序标题栏上的无响应消息。此时如果我们关闭应用程序,应用程序将终止,并且不会显示任何消息“应用程序没有响应。如果您等待,程序可能会再次响应”

但是在 Windows server 2016 中运行的应用程序在关闭应用程序时显示“应用程序没有响应。如果您等待,程序可能会再次响应”。

谁能建议如何在不更改代码的情况下禁止显示此消息,并允许用户在想要关闭应用程序时关闭应用程序?

disableProcessWindowsGhosting;代码不应包含在应用程序中。

【问题讨论】:

  • 这就是发明线程的原因。
  • 不治标,治本。即把繁重的工作放到一个线程中,确保工作可以中止。
  • 不幸的是,这是一个遗留应用程序,我们没有代码。到目前为止,此应用程序位于 Windows Server 2008 R2 中,现在我们已迁移到 2016 服务器。我正在寻找任何使应用程序行为与 2008 Server 相同的服务器级别更改。
  • 熟悉 Windows 消息系统。然后研究多线程。然后您将了解到,如果没有代码,您想要做的事情是不可能的。该消息是不言自明的 - 您的应用程序没有响应 Windows(可能它在执行一项大任务时卡住了),因此 Windows 会在其上抛出该消息。

标签: windows delphi


【解决方案1】:

您有两个主要选择:

  1. 致电DisableProcessWindowsGhosting。从某种意义上说,这不是一个很好的选择,因为它抑制了问题而不是解决了问题。
  2. 将长时间运行的任务移到工作线程中,从而允许您的主线程为 UI 提供服务。这是最佳实践解决方案。

【讨论】:

  • 不幸的是,这是一个遗留应用程序,我们没有代码。到目前为止,此应用程序位于 Windows Server 2008 R2 中,现在我们已迁移到 2016 服务器。我正在寻找任何使应用程序行为与 2008 Server 相同的服务器级别更改
  • 此站点 Stack Overflow 用于编程问题。
  • @D.VenkataNaresh 据我所知,在不编辑应用程序代码的情况下不可能隐藏此消息。
  • @D.VenkataNaresh "我正在寻找使应用程序行为与 2008 Server 相同的任何服务器级别更改" - 没有这样的选项。 每个 Windows 版本中的每个 应用程序都会遇到此问题,这与 2008 年与 2016 年的情况无关。如果应用程序不能保持对操作系统的响应,操作系统会抱怨它,通常以某种视觉方式让用户看到。如果您无法更新旧版应用程序的代码,请替换该应用程序,或者只使用警告消息。这些是您的选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-25
  • 2012-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多