如何允许最近提出的事件取消之前的事件?

时间:2012-10-25 20:10:52

标签: c# events

只要修改了我系统上的特定文件,就会触发我的事件。触发事件时对文件进行的处理估计大约为10分钟。我想知道如果在第一次修改的处理完成之前再次修改文件,是否可以取消处理并重新开始处理。如果是这样,我怎么能做到这一点?

2 个答案:

答案 0 :(得分:3)

在我看来,你不想取消事件,而是处理上一个事件。假设是这种情况,您需要知道文件处理代码取消。

我建议您使用CancellationToken and CancellationTokenSource,因为它们已在框架中可用。当您开始处理事件时,您将创建一个新的取消令牌源并将其保存在某个位置,并在完成后清除它。如果您收到新事件,请检查是否有已保存的cts,如果是这种情况请求取消。

我包含的链接包含有关如何编写处理代码的一些代码示例。

答案 1 :(得分:0)

如果您控制处理代码,则可以保留一个“当前操作”实例,该实例将由处理代码定期检查。如果处理完成,请将此引用设置为null。

引发新事件时,检查当前处理对象引用是否为null。如果是,则可以将布尔标志设置为true。处理代码看到它下次定期检查并停止。