Bonjour,
J'ai une petite question concernant l'arrêt d'un Thread.
De ce que j'ai vu, il est clairement déconseillé d'utiliser Abort().
En plus cette méthode lève une exception donc ce n'est pas terrible.
J'ai vu une technique ou un utilise un booléen.
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 public partial class MainWindow : Window { private bool ThreadContinue = false; private Thread ThreadShearch; public MainWindow() { InitializeComponent(); } private void Start_Click(object sender, RoutedEventArgs e) { ThreadContinue = true; ThreadShearch = new Thread(ConsoleWrite) { Name = "ThreadShearch" }; ThreadShearch.Start(); } private void Stop_Click(object sender, RoutedEventArgs e) { ThreadContinue = false; } private void ConsoleWrite() { for (int i = 0; i < 30000 && ThreadContinue; i++) Console.WriteLine(i); } private void LongRequest() { Thread.Sleep(10000); } }
Dans ce cas ci cela fonctionne très bien car on a la possibilité de vérifier régulièrement la valeur du booléen.
Hors dans le cas suivant je ne sais pas comment faire.
Imaginons une requête de recherche un peu spécifique qui prend un certain temps (25s).
Je voudrais pouvoir l'annuler, hors je n'ai pas de boucle et du coup je ne sais pas vraiment comment faire.
Avez vous des idées?
J'ai vu ce lien mais c'est le même problème.
http://faqcsharp.developpez.com/?pag...fx_thread_stop
Partager