从一个线程中,我将事件排队,以便在主线程的上下文中运行,如下所示:
TThread.Queue(nil, procedure begin AddDataToChart(SomeData) end);
现在,由于匿名方法中寻址的组件已被破坏,因此我不应该接收更多数据,因此我需要使这些事件出队。我知道我可以通过调用TThread.RemoveQueuedEvents从TThread同步列表中使事件出队。不幸的是,这似乎仅适用于Thread方法,不适用于排队的匿名方法。所以我的问题是如何从队列中删除我的匿名方法。
最佳答案
TThread
没有公开任何删除排队的匿名过程的方法。唯一的选择是使用专用的TThread
对象将匿名过程排队(在该对象上调用class
方法的非TThread.Queue()
版本,或将该对象作为AThread
参数传递给class
的TThread.Queue()
版本),然后可以通过该对象TThread.RemoveQueuedEvents()
方法的对象,该方法将TThread
对象作为输入。