J'essaye d'utiliser un thread dans une Windows Forms, mais je rencontre un problème lorsque j'utilise la croix pour fermer la fenêtre avant la fin du thread. Le thread ne semble pas s'interrompre correctement.
Cela me lance une exception : 'Object Disposed Exception' cannot access a dispoded object
Merci de votre aide.
Code : 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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 public partial class Form1 : Form { private bool thread_stop = false; Thread t=null; public delegate void deleg(string x); private void button1_Click(object sender, EventArgs e) { t = new Thread(new ThreadStart(le_thread)); thread_stop = false; t.Start(); } public void le_thread() { Random r = new Random(); int res = 0; for (int i = 1; i < 1000; i++) { if (thread_stop) { return; } Invoke((deleg)maj_txt, i.ToString()); for (int j = 1; j < 1000; j++) { for (int k = 1; k < 1000; k++) { res = k + r.Next(); } } } } public void maj_txt(string x) { info.Text = x; } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { thread_stop = true; if(t!=null) if (t.IsAlive || t.ThreadState == System.Threading.ThreadState.Running) { t.Join(1000); } } }
Partager