multithreading - 从 TThread 队列中删除匿名方法

标签 multithreading delphi delphi-xe

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

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

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

最佳答案

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

关于multithreading - 从 TThread 队列中删除匿名方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21022624/

相关文章:

delphi - 当相关类在编译和链接时存在并且在代码中显式存在时,运行时引发的 EClassNotFound 真正意味着什么?

javascript - IE 中 iframe 元素的线程

delphi - 无法在 Delphi 6 应用程序中创建包含视频和音频 (VFW) 的 AVI 文件

delphi - RAD Studio XE 2010 : Graphics32 compilation problem

windows - RegEnumValue 在 Vista 兼容模式下返回不同的缓冲区大小

delphi - 如何使用 TRGBTriple 获取 Canvas ?

windows - 使用 Delphi XE 的多模态对话框问题

multithreading - 为什么名称为 "monitor"?

node.js - Node.js 是否支持并行性?

c - 使并行排序算法比朴素优化的快速排序更快?