Ich versuche, die Verarbeitung einer Methode (SubmitQuery () im Beispiel), die von einem Tastaturereignis in WinRT aufgerufen wird, zu verzögern, bis für einen bestimmten Zeitraum (500ms in diesem Fall) keine weiteren Ereignisse aufgetreten sind.
Ich möchte nur, dass SubmitQuery () ausgeführt wird, wenn der Benutzer die Eingabe beendet hat.
Mit dem folgenden Code erhalte ich eine System.Threading.Tasks.TaskCanceledException, wenn Task.Delay (500, cancellationToken.Token); wird genannt. Was mache ich hier bitte falsch?
%Vor% Das ist zu erwarten. Wenn Sie die alte Delay
abbrechen, wird eine Ausnahme ausgelöst. So funktioniert die Stornierung. Sie können eine einfache try
/ catch
um die Delay
setzen, um die erwartete Ausnahme abzufangen.
Beachten Sie, dass Rx eine natürlichere Anpassung als async
ist, wenn Sie eine zeitbasierte Logik verwenden möchten.
Wenn Sie ContinueWith()
mit einer leeren Aktion hinzufügen, wird die Ausnahme nicht ausgelöst.
Tags und Links c# asynchronous windows-runtime cancellationtokensource cancellation-token