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

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

现在,由于匿名方法中寻址的组件已被破坏,因此我不应该接收更多数据,因此我需要使这些事件出队。我知道我可以通过调用TThread.RemoveQueuedEvents从TThread同步列表中使事件出队。不幸的是,这似乎仅适用于Thread方法,不适用于排队的匿名方法。所以我的问题是如何从队列中删除我的匿名方法。

最佳答案

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

10-05 22:16