在不加任何修饰的情况下,C# 默认不允许跨线程访问控件,实际在项目开发过程中,经常使用跨线程操作控件属性,需要设置相关属性才能正确使用,两种方法设置如下:
方法1:告诉编译器取消跨线程访问检查,在窗体构造函数中编写,如下图所示:
方法2:设置所需的控件为跨线程访问即可
this.textBox1.Invoke(new EventHandler(delegate //访问主界面的控件{textBox1.Text = class1.MyProperty.ToString();}));
示例代码如下:
private void button1_Click(object sender, EventArgs e){Task.Run(() => //开启线程{Class1 class1 = new Class1();while (true){Thread.Sleep(100);class1.MyProperty = random.Next(210, 230);this.textBox1.Invoke(new EventHandler(delegate //访问主界面的控件{textBox1.Text = class1.MyProperty.ToString();}));}});}