从TThread队列中删除匿名方法

时间:2014-01-09 14:14:13

标签: multithreading delphi delphi-xe

在一个线程中,我将事件排队到主线程的上下文中运行,如下所示:

TThread.Queue(nil, procedure begin AddDataToChart(SomeData) end);

现在在某些时候我需要将这些事件出列,因为匿名方法中解决的组件被破坏,因此不应该接收更多数据。我知道我可以通过调用TThread.RemoveQueuedEvents从TThread合并器中取消事件。不幸的是,这似乎只适用于Thread方法,但不适用于排队的匿名方法。所以我的问题是如何从队列中删除我的匿名方法。

1 个答案:

答案 0 :(得分:1)

TThread没有公开任何方法来删除排队的匿名过程。唯一的选择是使用专用的TThread对象对匿名过程进行排队(在该对象上调用非class版本的TThread.Queue()方法,或者将该对象作为{{1}传递AThread class版本TThread.Queue()}的参数,然后您可以将该对象传递给TThread.RemoveQueuedEvents()对象作为输入的TThread方法。