跨线程操作
建议方法
1 //lable1是主线程创建的
2 Thread td = new Thread(() =>
3 {
4 //如果label不是当前执行此方法的线程创建的,需要用Invoke,跨线程操作
5 if (label1.InvokeRequired)
6 {
7 label1.Invoke(new Action(() => { label1.Text = "11"; }));
8 }
9 //如果label是当前执行此方法的线程创建的,可以直接操作
10 else
11 {
12 label1.Text = "11";
13 }
14 });
15 td.IsBackground = true;
16 td.Start();
以下方法不建议
1 private void button1_Click(object sender, EventArgs e)
2 {
3 //lable1是主线程创建的
4 Thread td = new Thread(() => { label1.Text = "11"; });
5 td.IsBackground = true;
6 td.Start();
7 }
8
9 private void Form1_Load(object sender, EventArgs e)
10 {
11 //不让检查是否跨线程
12 Control.CheckForIllegalCrossThreadCalls = false;
13 }