C# 跨线程访问窗体控件

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