Я искал способ отложить дорогой поиск в событии TextChanged. Следующий код ждет 300 мс после того, как пользователь закончил печатать, а затем выполняет поиск.
Task.Delay(TimeSpan.FromMilliseconds(300), this.throttleCts.Token) // if no keystroke occurs, carry on after 500ms
.ContinueWith(
delegate { PerformSearch(e.NewText); },
CancellationToken.None,
TaskContinuationOptions.OnlyOnRanToCompletion,
TaskScheduler.FromCurrentSynchronizationContext());
Существует ли более элегантный эквивалентный асинхронный / ожидающий код для приведенного выше примера?
Я заменил на это, но это вызывает TaskCanceledException
await Task.Delay(300, this.throttleCts.Token);
PerformSearch(e.NewText);