Gestion ThreadAbordException dans bloc Finally

Equinox84 Messages postés 63 Date d'inscription lundi 2 février 2004 Statut Membre Dernière intervention 19 mai 2010 - 25 mars 2010 à 17:29
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 28 mars 2010 à 20:04
Bonjour,

J'ai une question comportemental sur l'exception ThreadAbortException.

Lorsqu'un thread est tué, il lève l'exception ThreadAbortException.

Comme indiqué dans la doc MSDN, cette exception passe dans un bloc Finally si l'execution était dans un Try.

Je voudrais être "VRAIMENT SUR" du comportement de l'exception lorsque l'execution de code se trouve deja dans le code finally.

Pour une exception normale, j'aurais pensé que l'exception remontée.
Est ce que, pour cette exception un peu spéciale comme indiqué sur la MSDN, le bloc finally ne serait pas terminé avant que l'exception remonte ?

Merci

1 réponse

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
28 mars 2010 à 20:04
Bonjour,

En l'occurence oui, comme le dit la documentation, l'execution du bloc finally devrait se terminer.
Je n'ai jusqu'à présent pas constaté de comportement contraire, mais c'est relativement compliqué à vérifier en situation réelle.

En général j'ai tendance à minimiser l'utilise d'Abort pour arrêter un traitement, je préfère au maximum (quand c'est possible) avoir un flag Cancel et/ou Abort partagé entre le demandeur et le code qui effectue la tâche annulable.
Ca permet d'avoir un arrêt en un point connu au lieu de se retrouver avec un abort à n'importe quel endroit du code executé par le thread (y compris dans le code tiers).
Mais ça représente une surcharge de travail (si on ne tiens pas compte de celui à fournir pour gérer correctement un abort) et ce n'est pas forcément utilisable dans tous les cas.


/*
coq
MVP Visual C#
CoqBlog
*/
0
Rejoignez-nous