我的代码中的一些对话框和数据模块需要延迟执行,并通过调用PostMessage()来执行此操作。这是模块之间的不,即数据模块将具有在那里发布的PostMessage的处理程序,因此会出现一个对话框。
不同模块中的代码之间存在(当然?)。
我想跟踪程序运行时处理某些特定消息的顺序。
(如何)我可以在Delphi XE2中做到这一点?
所有内容都在主UI线程中运行。
附加说明:
答案 0 :(得分:1)
最简单的方法是记录消息。日志记录允许您检查程序的操作,而不会像交互式调试断点那样干扰它。对于消息处理,正如您所发现的那样,断点的干扰使得理解流程变得相当困难。
由于您要发布消息,因此它们由线程的消息队列处理。假设有问题的线程是主UI线程,那么您可以使用Application.OnMessage
作为挂钩来执行日志记录。由VCL消息循环处理的所有排队消息都会通过此事件。通常最好使用TApplicationEvents
实例来处理Application
个事件。