En fait oui, un ThreadAbortException
est spécial. Même si vous la prenez en main, elle sera automatiquement rejetée par le CLR, à la fin du try/catch/finally. (Comme indiqué dans les commentaires, il peut être supprimé avec ResetAbort
mais à ce stade, le code sent le poisson pourri.)
Ne pas mentionner, même si il n'est pas évident du code exécutable à l'extérieur de votre try/catch/finally, chaque itération de la boucle des vents hors de la portée pour une petite durée, donc l'abandon pourrait se produire à l'extérieur de votre bloc try.
Sauf si vous êtes en train de faire quelque chose dans le bloc catch, je voudrais juste faire un try/finally et ne vous inquiétez pas à propos de ThreadAbortException
. Il y a beaucoup des meilleurs moyens d'avorter d'un thread sans l'aide d' Thread.Abort
qui non seulement chaotique interrompt votre code à un imprévisible point, c'est pas garanti pour fonctionner, parce que si le thread est actuellement en appelant à certains de code non managé, le fil ne sera pas abandonner jusqu'à ce que le contrôle retourne au code managé.
C'est beaucoup mieux d'utiliser un certain type de primitives de synchronisation comme un ManualResetEvent
d'agir comme un drapeau en parler à votre fil quand à la sortie. Vous pourriez même utiliser un champ booléen à cet effet qui est ce que le BackgroundWorker n'.