Реализация задачи отложенного выполнения с отменой - PullRequest
1 голос
/ 02 декабря 2010

У меня есть ситуация, когда я хочу разрешить пользователю вводить текст в текстовое поле WPF, при каждом нажатии клавиши я вызываю OnPropertyChanged и нажимаю на источник привязки (используя SourceUpdatedTrigger = PropertyChanged). Я хочу, чтобы перед попыткой обработать данные (скажем ... 1 секунду) Думайте об этом как о системе проверки орфографии, в которой пользователь ждет, пока пользователь прекратит печатать, прежде чем сказать им, что он не может записать.

Моя проблема:

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

работает нормально до тех пор, пока вы на самом деле не отмените, но тогда источник токена отмены постоянно находится в состоянии "запрос на отмену", и мне нужно повторно установить CTS ... это кажется ... в корне неправильно ... Есть ли лучше способ «перезагрузить» CTS, но все же уведомить существующие токены о том, что их следует отменить?

1 Ответ

2 голосов
/ 02 декабря 2010

Нет, CancellationTokenSource можно отменить только один раз - как вы говорите, вам нужно создать новый после того, как вы отменили его, для дальнейших задач.

...