une ThreadAbortException peut être soulevée au cours Thread.Sleep?
-
24-09-2019 - |
Question
Peut-Thread.Abort interrompre un fil qui dort (en utilisant, par exemple, Thread.sleep (TimeSpan.FromDays (40))? Ou bien attendre que le laps de temps de sommeil a expiré?
(Remarques: FromDays (40) est bien sûr une blague et je sais Thread.Abort est pas un moyen recommandé d'arrêter un fil, je travaille avec le code héritage que je ne veux pas factoriser pour l'instant.. )
La solution
code vaut mille mots:
public static void Main(string[] args)
{
var sleepy = new Thread(() => Thread.Sleep(20000));
sleepy.Start();
Thread.Sleep(100);
sleepy.Abort();
sleepy.Join();
}
Le programme se termine avant que le temps de sommeil est épuisé.
Autres conseils
Vous pouvez interrompre le fil d'un autre fil uniquement. Autrement dit, vous devez stocker la référence de cette discussion quelque part et puis appelez .Abort
d'un fil autre que celui qui dort.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow