取消计划任务
Cancel a scheduled task
我有一个接收事件的 Windows Delphi 应用程序,对于这些事件中的每一个,我都想 运行 以并行方式执行任务(这样我就可以准备好对于以下事件)。通过 omnithread 库的抽象有很多方法可以做到这一点。
问题是我的部分代码需要在接收到事件后立即执行(基本上是 "decode" 事件参数),而另一部分需要在几秒钟后才执行对于相同的上下文,没有发生任何新情况的情况。
此行为应响应 "only store this new value if it last longer than 3000ms, otherwise just cancel it"。
因此,如果新事件以相同的上下文到达,我需要的是 "cancel" 一个 运行ning 任务(等待 3000 毫秒的任务)。
我不能使用管道抽象,因为当第一阶段结束时,它会自动填充第二阶段队列而不问我是否要取消它。
这可能吗?
谢谢。
听起来你需要一个 Dictionary<Context, Event>
,其中事件还带有一个 "created" 时间戳 属性,以及一个持续检查此字典中是否有事件条目的背景胎面 elapsed time > 3000ms
。
传入事件更新时间戳和事件参数,直到线程检测到与条件匹配的条目,然后从字典中提取条目。
我有一个接收事件的 Windows Delphi 应用程序,对于这些事件中的每一个,我都想 运行 以并行方式执行任务(这样我就可以准备好对于以下事件)。通过 omnithread 库的抽象有很多方法可以做到这一点。
问题是我的部分代码需要在接收到事件后立即执行(基本上是 "decode" 事件参数),而另一部分需要在几秒钟后才执行对于相同的上下文,没有发生任何新情况的情况。 此行为应响应 "only store this new value if it last longer than 3000ms, otherwise just cancel it"。 因此,如果新事件以相同的上下文到达,我需要的是 "cancel" 一个 运行ning 任务(等待 3000 毫秒的任务)。 我不能使用管道抽象,因为当第一阶段结束时,它会自动填充第二阶段队列而不问我是否要取消它。
这可能吗?
谢谢。
听起来你需要一个 Dictionary<Context, Event>
,其中事件还带有一个 "created" 时间戳 属性,以及一个持续检查此字典中是否有事件条目的背景胎面 elapsed time > 3000ms
。
传入事件更新时间戳和事件参数,直到线程检测到与条件匹配的条目,然后从字典中提取条目。