quelle est la bonne façon d'annuler plusieurs tâches dans c #
J'ai un bouton c'est frai 4 tâches. Le même bouton se transforme en un bouton annuler et en cliquant ce qui devrait annuler tous les 4 tâches. Dois-je passer la même annuler jeton à tous les 4 tâches et ont eux sondage sur le même jeton pour IsCancelRequested ? Je suis confus après la lecture de la doc msdn sur createlinkedtokensource. Comment est-ce fait normalement ? merci
Mise À Jour: La Tâche.WaitAll() attend les caisses toutes les tâches d'exécution complets. De même, comment savoir quand toutes les tâches ont été annulés une fois partagé annuler jeton source est réglée sur annuler.
source d'informationauteur Gullu
Vous devez vous connecter pour publier un commentaire.
Ouais, ce que vous avez dit à propos de l'utilisation d'un seul
CancellationToken
est correct. Vous pouvez créer un seulCancellationTokenSource
et l'utilisation de sonCancellationToken
pour toutes les tâches. Vos tâches devraient vérifier le jeton régulièrement pour annulation.Par exemple:
Votre bouton d'appel
cts.Cancel();
à annuler des tâches.Mise à jour pour cause de mise à jour:
Il y a un peu de moyens pour faire ce que vous demandez. Une façon est d'utiliser
ct.IsCancellationRequested
pour vérifier annulation sans jeter, puis laissez votre tâche à accomplir. PuisTask.WaitAll(tasks)
sera complet lorsque toutes les tâches ont été annulés.J'ai mis à jour le code pour refléter ce changement.
Oui, vous devriez passer le même et l'utiliser pour annuler toutes les tâches d'un seul coup, si c'est votre intention.
Utilisation BackroundWorker classe, définissez la propriété WorkerSupportsCancellationlancer les tâches en appelant RunWorkerAsync() et de les arrêter à l'aide de CancelAsync()
Vous n'avez pas neet pour synchroniser votre code avec l'INTERFACE utilisateur.