Je ne sais pas pourquoi mais je ne peux plus interrompre mon propre thread.L'interruption de thread C# a cessé de fonctionner
thread = new Thread(new ParameterizedThreadStart(this.doWork));
thread.Start(param);
...
thread.Interrupt();
//in doWork()
try {
...
}
catch (System.Threading.ThreadInterruptedException)
{
//it never hits here. it use to
}
je recherche et je n'ai pas de prises dans mon code, ce qui est le seul hic (System.Threading.ThreadInterruptedException). Alors, quoi de neuf? En utilisant le débogueur, je peux voir mon code parcourir le thread.Interrupt() ;. Si je fais thread.abort() je vais attraper une exception System.Threading.ThreadAbortException. Pourquoi attrape-t-il cela et pas ThreadInterruptedException?
+1. Les threads d'interruption devraient généralement être évités - utilisez un mécanisme d'annulation plus gracieux. –
On dirait qu'il ne devrait pas interrompre du tout (je me demande comment je l'ai fait en premier). Donc .abort est une meilleure option? Ce que je veux faire est tuer le fil mais l'avoir exister et appeler quelques fonctions au lieu de la mort pure et simple –
Il est généralement préférable de signaler le fil pour terminer gracieusement, plutôt que de le tuer –