threads zijn nieuw voor mij, nu probeer ik dit onderwerp mij eigen te maken. Ik heb al heel wat zitten doorlezen maar kan sommige dingen niet goed begrijpen.
Er wordt steeds aangehaald dat de main UI controls niet kunnen worden geupdate vanuit een andere opgestarte thread. En dit steeds dmv delegate/invoke moet gebeuren.
Dit laatste begrijp ik niet echt aangezien wanneer ik onderstaande code run wel gewoon de main UI kan updaten ?
Of is het principieel fout om een instantie van de main Form door te geven aan een opgestarte sub-thread?
Er wordt steeds aangehaald dat de main UI controls niet kunnen worden geupdate vanuit een andere opgestarte thread. En dit steeds dmv delegate/invoke moet gebeuren.
Dit laatste begrijp ik niet echt aangezien wanneer ik onderstaande code run wel gewoon de main UI kan updaten ?
Of is het principieel fout om een instantie van de main Form door te geven aan een opgestarte sub-thread?
C#:
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
| namespace ThreadTest2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); MyClass myclass = new MyClass(this); ThreadStart job = new ThreadStart(myclass.ThreadJob); Thread thread = new Thread(job); thread.Start(); } public void UpdateLabel(int i) { label1.Text = i.ToString(); } } public class MyClass { private Form1 m_mainForm; public MyClass(Form1 _mainFrom) { m_mainForm = _mainFrom; } public void ThreadJob() { for (int i = 0; i < 10; i++) { m_mainForm.UpdateLabel(i); Thread.Sleep(500); } } } } |