Sto tentando di ritardare l'elaborazione di un metodo (SubmitQuery() nell'esempio) chiamato da un evento di tastiera in WinRT fino a quando non si sono verificati ulteriori eventi per un periodo di tempo (500ms in questo caso).TaskCanceledException quando si chiama Task.Delay con un CancellationToken in un evento di tastiera
Voglio solo SubmitQuery() da eseguire quando penso che l'utente abbia finito di digitare.
Utilizzando il codice seguente, continuo a ricevere System.Threading.Tasks.TaskCanceledException quando Task.Delay (500, cancellationToken.Token); è chiamato. Cosa sto facendo di sbagliato qui per favore?
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();
}
}
hai potuto fornire link per alcune risorse su come Rx è più adatta per il tempo a base di logica – Anupam
@Anupam: Questa è la mia esperienza. –