取消计划任务

时间:2015-02-16 16:24:10

标签: multithreading delphi omnithreadlibrary

我有一个接收事件的Windows Delphi应用程序,在这些事件中,我希望以并行方式运行任务(因此我可以为以下事件做好准备)。有很多方法可以通过omnithread库的抽象来实现这一点。

问题是我的部分代码需要在事件接收后立即执行(基本上是“解码”事件参数),另一部分需要在没有任何条件的情况下执行几秒钟相同背景下的新事件。 此行为应响应“仅存储此新值(如果持续时间超过3000毫秒,否则只需取消它”)。 因此,如果新事件以相同的上下文到达,我需要的是“取消”正在运行的任务(等待3000毫秒)。 我不能使用管道抽象,因为当第一阶段结束时,它会自动填充第二阶段队列,而不会询问我是否要取消它。

这可能吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

听起来你需要一个Dictionary<Context, Event>,其中的事件也带有&#34;创建的&#34; timestamp属性,以及使用elapsed time > 3000ms持续检查此词典中是否存在事件条目的后台步骤。 传入事件更新时间戳和事件参数,直到线程检测到与条件匹配的条目,然后从字典中提取条目。