在不加任何修饰的情况下,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();
}));
}
});
}