仅允许最近的异步方法调用

时间:2013-09-16 08:29:39

标签: multithreading asynchronous task c#-5.0

每次文本框注册textchange事件时,我都会调用异步方法。此异步方法对文本框中的文本执行任务。问题是,当用户快速键入时,更新的异步方法可能会在异步方法调用之前完成。

我需要做的是销毁所有以前的异步方法调用,并且只使用最新的方法继续调用。我如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

如果您不想使用任何第三方库,您可以做两件事。

第一种是在采取行动之前添加延迟,因此在您发生变更时启动的异步方法中:

await Task.Delay(1000); // Wait a second before getting into the work.

第二个是保持对您在更改时创建的任务的引用。然后,当再次发生更改时,您可以等待原始任务在开始新任务之前完成,或者如果您愿意,在创建它时将其传递给CancellationToken,以便您可以取消该令牌并立即启动新任务

归根结底,它归结为一个人没有超越另一个人的重要性。如果它是关键的,等待原始任务,即使在您取消它的情况下。如果它太多并不重要,那么只需取消它并让它在自己的时间内放松。

当然,如果您不需要在UI线程中执行任何操作,请记住在等待时添加.ConfigureAwait(false)。