Puis-je arrêter un Système.Le filetage.Minuterie
J'ai une application qui utilise des minuteries pour l'occasion de rencontrer des tâches de surveillance sur les threads secondaires. Certaines de ces tâches de nettoyage de prendre beaucoup de temps et je voudrais être en mesure d'abandonner ces tâches (normalement si possible) lorsque mon utilisateur termine le programme.
Est-il possible d'interrompre le fil par programmation comme je peux avec du Fil.Abort(), ou devrais-je ajouter un indicateur pour le code pour indiquer que le thread a fini et vérifier que dans valrious endroits dans le code qui est commencé par la minuterie?
- Ne serait pas la cessation de l'application de résilier tous les threads?
Vous devez vous connecter pour publier un commentaire.
Il n'y a aucun moyen de connaître les
Thread
sur lequel unThreading.Timer
rappel de courir au-devant de temps. Par conséquent, il n'est pas de manière générale de l'abandonner. Il est possible d'avoir le rappel lui-même de communiquer leThread
exemple, mais il ouvre un couple de conditions de courseRemarque: En général à l'aide de
Abort
est une mauvaise pratique. C'est un assez fiable de la fin avec difficile à détecter les blocages et /ou les ressources des fuites. C'est beaucoup mieux d'utiliser un mécanisme passif commeCancellationToken
Vous pouvez arrêter la minuterie avant de rappel s'exécute à l'aide
.change
, mais une fois le rappel commence à s'exécuter, vous devez utiliser une application indicateur de niveau pour permettre à votre code de sortie.Comme une note de côté, vous ne devriez pas utiliser
thread.abort()
sauf si vous êtes absolument sûr à 100% que vous savez l'état il va être de gauche dans le. il peut déstabiliser sérieusement votre application dans d'étranges façons.de l'utiliser.Minuterie.Changement(Délai D'Attente.L'Infini, Le Délai D'Attente.À l'infini);
d'abord je dois utiliser .méthode dispose, mais il ne fonctionne pas dans mon cas, j'ai donc utiliser la Minuterie.changement.
c'est la meilleure solution que j'ai trouver.
Vous dire quelque chose le long de ces lignes?
Explication: Détruire un objet = détruire proccess.