J'ai ce code:
Thread t = new Thread(() => UpdateImage(origin)); t.Name = "UpdateImageThread"; t.Start();
5 Réponses :
Le fil se termine automatiquement car vous ne manipulez pas l'exception, ainsi que le reste de votre processus, en supposant que vous êtes sur .NET 2.0 ou plus (que je suppose que vous êtes dû à la syntaxe C # 3 dans la question). p>
Si (ou votre choix de manutention d'erreur) p> p> P> updateImage code> jette une exception, il va probablement supprimer tout votre processus. Tout fil qui soulève une exception de niveau supérieur indique un gros problème. Vous devez envelopper cela, par exemple en mettant
essayer code> /
attraper code> autour de
updateImage code> et faire quelque chose de convient. Et oui, si une exception arrive au sommet d'un thread, le thread est mort:
L'exception ne fera pas l'arrêt du thread s'il est coincé quelque part dans la méthode de mise à jour de mise à jour - à moins que la clause de capture ne revienne explicitement de la méthode. P>
S'il est non gré, votre application s'écrasera de toute façon - entraînant l'arrêt du thread;) P>
Il est préférable de passer un essai ... Catch Block dans votre méthode de mise à jour de mise à jour et effectuez votre manipulation d'erreurs logiques là-bas à l'endroit où elle appartient. Vous pouvez ensuite décider de vous-même pour revenir et mettre fin au fil ou réessayer P>
C'est comme le fil principal, par exemple s'il y a une exception dans le fil principal et que personne ne l'attrape, le fil principal se termine et votre application. P>
la même chose pour les threads utilisateur p>
Depuis .NET 2.0, lorsqu'un fil de fond jette une exception (celle-ci n'est pas manipulée), le temps d'exécution .NET prendra votre processus. Dans une application Windows.Forms, ceci est différent; Vous pouvez utiliser l'application Application.ThreadException pour attirer l'exception. P>
Ceci était différent dans .NET 1.0 / 1.1, vous pouvez lire ici sur tout le sujet ici (par exemple, comment activer le comportement hérité avec .NET 2.0 ou version ultérieure): http://msdn.microsoft.com/en-us/library/ms228965.aspx#changefromPrevioustions . P >
Peu importe que vous utilisiez Windows.Forms ou le comportement hérité - si le processus ne quitte pas, vous n'avez pas besoin d'arrêter explicitement le fil; L'exception va l'arrêter. P>