【发布时间】:2010-11-18 02:39:26
【问题描述】:
Application.ProcessMessages 命令是众所周知的,我在长进程中使用它以确保我的程序不会占用计算机。
但我有一组相当快的处理,我将视图缓冲到文件中。在缓冲过程中,可能会发送一些系统消息(例如重绘或滚动条移动或其他事件)。我想防止这些被 ProcessMessages 处理,直到我的缓冲完成。
有什么办法:
在我的程序完成之前阻止 Application.ProcessMessages,或者
捕获在我的过程中生成的所有消息,直到过程结束才释放它们。
【问题讨论】:
-
重读你的问题我不太明白——如果你有一个快速执行的程序并且不希望
Application.ProcessMessages处理任何不受欢迎的消息,你为什么要打电话给Application.ProcessMessages这个程序? -
mghie:我没有明确地调用它,但我确实将一些事件添加到队列中(例如滚动条位置),如果消息恰好得到处理,这些事件将被执行。我需要简单地确保在这段代码中,不会执行任何待处理的事件
-
但这就是重点:如果您在您的过程中,除非您明确调用
Application.ProcessMessages,否则将处理 no 事件。它们将被添加到队列中并稍后处理,仅此而已。除非您愿意,否则如何处理这些消息?
标签: delphi messages idle-processing