Я пытаюсь отложить обработку метода (SubmitQuery() в примере), вызванного из события клавиатуры в WinRT, до тех пор, пока в течение периода времени не будет никаких событий (в этом случае будет 500 мс).
Я хочу, чтобы функция 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();
}
}