我有一种情况,我希望允许用户键入WPF TextBox,在每次击键时我调用OnPropertyChanged并推送到我的绑定源(使用SourceUpdatedTrigger = PropertyChanged)我希望在尝试之前有一个短暂的延迟处理数据(比如...... 1秒)把它想象成一个拼写检查系统,等待用户在告诉他们不能拼写之前停止打字。
我的问题是:
await TaskEx.Delay(1000, cts.Token);
await TaskEx.RunEx(PollAsync, cts.Token);
工作正常,直到你真正取消,但随后取消令牌来源永远处于“取消请求”状态,我必须重新安置CTS ...这似乎......从根本上错了......有没有更好的“重置”CTS的方法,但仍然通知现有的令牌他们应该取消?
答案 0 :(得分:2)
不,CancellationTokenSource
只能取消一次 - 正如您所说,您需要在取消它之后创建一个新的,以便进一步完成任务。