Я пытаюсь отложить обработку метода (SubmitQuery() в примере), вызванного из события клавиатуры в WinRT, до тех пор, пока не будет никаких дополнительных событий для период времени (500 мс в этом случае).TaskCanceledException при вызове Task.Delay с CancellationToken в событии с клавиатурой
Я хочу, чтобы функция SubmitQuery() запускалась, когда я думаю, что пользователь закончил печатать.
Используя следующий код, я продолжаю получать System.Threading.Tasks.TaskCanceledException, когда Task.Delay (500, cancelationToken.Token); называется. Что я делаю неправильно здесь, пожалуйста?
CancellationTokenSource cancellationToken = new CancellationTokenSource();
private async void SearchBox_QueryChanged(SearchBox sender, SearchBoxQueryChangedEventArgs args)
{
cancellationToken.Cancel();
cancellationToken = new CancellationTokenSource();
await Task.Delay(500, cancellationToken.Token);
if (!cancellationToken.IsCancellationRequested)
{
await ViewModel.SubmitQuery();
}
}
могли бы вы предоставить ссылку на некоторые ресурсы о том, как Rx лучше подходит для повременной логика – Anupam
@Anupam: Это из моего собственного опыта. –