TaskCanceledException bei der aufrufenden Task.Verzögerung mit einem CancellationToken in ein Tastatur-Ereignis

Ich versuche zu verzögern die Bearbeitung einer Methode (SubmitQuery() in dem Beispiel) aufgerufen, die ein Tastatur-Ereignis in WinRT, bis es keine weiteren Veranstaltungen für einen Zeitraum (500 MS in diesem Fall).

Ich will nur SubmitQuery() zu laufen, wenn ich denke, dass der Benutzer fertig mit der Eingabe.

Mithilfe des folgenden Codes, bekomme ich immer eine System.Threading.Aufgaben.TaskCanceledException bei der Aufgabe.Delay(500, cancellationToken.Token); aufgerufen wird. Was mache ich hier falsch bitte?

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();
    }
}
Schreibe einen Kommentar