2010-12-01 75 views
1

我有一种情况,我想让用户键入一个WPF文本框,在每次击键时调用OnPropertyChanged并推送到我的绑定源(使用SourceUpdatedTrigger = PropertyChanged)我想那里在尝试处理数据之前需要很短的时间(例如...... 1秒)。想象这就像是一个拼写检查系统,在这个系统中,用户在告诉他们不能拼写之前等待用户停止打字。用取消执行延迟执行任务

我的问题是:

await TaskEx.Delay(1000, cts.Token); 
await TaskEx.RunEx(PollAsync, cts.Token); 

正常工作,直到你真正取消,但随后取消令牌源permanantly状态的“请求取消”,我不得不reinstanciate的CTS ...这似乎...根本错误...有没有更好的方法来“重置”CTS,但仍然通知现有的令牌,他们应该取消?

回答

2

不,一个CancellationTokenSource只能取消一次 - 正如您所说的,您需要在取消后创建一个新的进一步任务。

+0

有没有比这更好的延迟启动处理“最佳实践”? – Firoso 2010-12-01 22:12:50