La mise en œuvre d'une tâche d'exécution retardée avec l'annulation
-
29-09-2019 - |
Question
J'ai une situation où je veux permettre à un utilisateur de taper dans un je veux qu'il y ait un court délai WPF TextBox, sur chaque combinaison de touches que j'appelle OnPropertyChanged et pousser ma source de liaison (à l'aide SourceUpdatedTrigger = PropertyChanged) avant de tenter de traiter les données (par exemple ... 1 seconde) Pensez à cela comme un système de vérification orthographique où il attend que l'utilisateur de taper d'arrêt avant de leur dire qu'ils ne peuvent pas épeler.
Ma question est:
await TaskEx.Delay(1000, cts.Token);
await TaskEx.RunEx(PollAsync, cts.Token);
fonctionne bien jusqu'à ce que vous annulez en fait, mais la source jeton d'annulation est permanantly dans l'état « demandé cancelation », et je dois reinstanciate la CTS ... cela semble ... fondamentalement mal ... Y at-il une meilleure façon de « réinitialiser » la CTS, informe encore encore des jetons existants qu'ils devraient annuler?
La solution
Non, CancellationTokenSource
ne peut être annulée une fois -. Comme vous le dites, vous devez créer une nouvelle fois que vous avez annulé ou résilié, pour d'autres tâches