Dans mon programme C#, j'ai un thread qui représente un test en cours, qui peut être interrompu par un clic sur un bouton intitulé "Interrupt execution". Pour que le fil (et donc le test) se termine de façon élégante (et fasse un travail vital à l'avance), ce bouton n'est activé que dans certains moments bien définis, dans lesquels j'attrape ThreadAbortedException
, fais Thread.ResetAbort()
et meurs magnifiquement (c'est-à-dire, le fil). Le problème est que, dans la fenêtre de temps où l'abandon est possible, il y a certaines tâches qui doivent être effectuées du début à la fin une fois initiées, et, donc, je crains TAE. Serrures ne fournissent pas une solution pour cela, et, bien que finalement les blocs font, je ne trouve pas élégant pour envelopper le code important de la manière suivante:Existe-t-il un moyen d'assurer l'exécution complète du bloc de code dans un thread .NET?
try {
} finally {
// vital code
}
Cependant, je ne trouve pas d'autre solution .
Est-ce une autre façon de retarder l'interférence de ThreadAbortException
jusqu'à la fin du bloc?
Bien que BeginCriticalRegion() pourrait, d'une manière, d'assurer l'exécution de code, parce que votre application pourrait arrêter autrement, je voulais un dispositif qui a refusé ThreadAbortExceptions d'interrompre mon code. –