2010-12-01 76 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