Delphi 单击弹出菜单时,程序冻结或暂停。(功能)

Delphi 单击弹出菜单时,程序冻结或暂停。(功能),delphi,delphi-2009,Delphi,Delphi 2009,我遇到了一个问题,当我在特定窗体上运行某个过程时,程序会冻结 我已经在这个项目的其他领域运行了很多次,没有任何问题 我发现,如果我在过程之前或之上放置断点或ShowMessage,它将平稳运行 而且,如果我走出窗口(软件)再回来,它就冻结了,那么它就工作了?!(就像我只需单击windows开始按钮)。。。有什么想法吗 谢谢 这听起来不是解决问题的正确方法,但是您可以使用Delphi的TTimer类等待指定的时间,然后继续执行挂起的任何进程 不过,我怀疑现有代码存在逻辑问题,任何定时修复只会在您的

我遇到了一个问题,当我在特定窗体上运行某个过程时,程序会冻结

我已经在这个项目的其他领域运行了很多次,没有任何问题

我发现,如果我在过程之前或之上放置断点或ShowMessage,它将平稳运行

而且,如果我走出窗口(软件)再回来,它就冻结了,那么它就工作了?!(就像我只需单击windows开始按钮)。。。有什么想法吗


谢谢

这听起来不是解决问题的正确方法,但是您可以使用Delphi的TTimer类等待指定的时间,然后继续执行挂起的任何进程


不过,我怀疑现有代码存在逻辑问题,任何定时修复只会在您的特定环境中解决问题。

以下是我如何修复它的。此外,我还需要更多的信息来解释我以前没有意识到的与这个问题相关的解决方案

正在调用的函数通过弹出菜单访问

弹出菜单来自主窗体,由于某种原因,当我右键单击一个页面控件(不是主窗体的一部分)时弹出,即使我没有设置属性

解决方案-将主窗体弹出菜单添加到PageControl PopupMenu属性

不许动


谢谢您的帮助。

您正在使用线程吗?它到底冻结在哪里?(当应用程序不再响应时暂停,并查看调用堆栈)。您如何实现暂停?治疗疾病,而不是症状
application.ProcessMessages而不是暂停,如果这有帮助,那么您遇到了一个问题,您正在转发的某些消息尚未处理。我已尝试了application.ProcessMessages,但它不起作用。谢谢。我在程序中的很多地方都使用这个函数。只有在程序的这个特定区域(表单)中调用时,才会发生冻结问题。如果我设置了一个简单的断点,那么它就会毫无障碍地正常运行。我会试试TTimer方法谢谢。计时器不是等待的方式。计时器是以周期性间隔被戳并对这些戳做出响应的方式。如果要等待,请使用
睡眠
。然而,正如我在这里多次说过的,如果
睡眠
是解决方案,那么您可能不理解这个问题。