Enfilez Abandonner dans .NET
-
24-09-2019 - |
Question
J'ai fil des thats l'analyse d'un fichier et faire des appels transactionnels à la base de données, chaque transaction a une entrée d'audit dans le cadre de sa transaction. Y at-il énormément de mal à appeler Thread.Abort () pour arrêter le traitement du dossier? Plutôt que de dispersion des taches de sécurité laid partout?
Le dossier sera fermé après l'appel Abandonner.
La solution
Le problème évident serait le risque d'abandonner une transaction, ce qui pourrait provoquer le blocage pour une durée indéterminée (ou jusqu'à ce délai d'attente). Mais vous pouvez laisser toutes sortes off désordre -. Serrures irrécupérables de Monitor
, sémaphores, etc, les fuites de mémoire, etc
En bref: essayez aussi dur que possible pour éviter d'avoir à abandonner un fil à moins que vous savez exactement ce qu'il fait à l'époque. Et la seule façon que vous pouvez savoir ce qu'il fait est si elle est déjà dans un connu « endroit sûr » (pour utiliser votre terme) - donc vous pourriez tout aussi bien jeter une exception ou quelque chose et de le laisser se relever d'une manière gérée .
Autres conseils
Les meilleures pratiques: seulement abandonner un fil lorsque vous démolissent le processus.
Essayez Thread.Interrupt () pour forcer le fil à sortir de son état d'attente.