0

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

4

2 回答 2

3

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

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

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

于 2012-10-25T20:32:46.263 回答
0

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

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

于 2012-10-25T20:19:17.580 回答