Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 跨线程操作在C中无效#_C# - Fatal编程技术网

C# 跨线程操作在C中无效#

C# 跨线程操作在C中无效#,c#,C#,可能重复: 问候,, 我试图从线程更新按钮状态,但出现以下错误: “跨线程操作无效:从创建控件“btn1”的线程以外的线程访问该控件。” 请建议如何解决这个问题 这是我的密码: if (strMyPlayer == "Player One") { if (srReceiver.ReadLine() == "Player One says: btn1") { btn1.Text = "O"; btn1.Enabled = f

可能重复:

问候,, 我试图从线程更新按钮状态,但出现以下错误:

“跨线程操作无效:从创建控件“btn1”的线程以外的线程访问该控件。”

请建议如何解决这个问题

这是我的密码:

 if (strMyPlayer == "Player One")
 {
      if (srReceiver.ReadLine() == "Player One says: btn1")
      {
           btn1.Text = "O";
           btn1.Enabled = false; 
      }
 }
 else
 {
      if (srReceiver.ReadLine() == "btn1")
      {
           btn1.Text = "X";
           btn1.Enabled = false;
      }     
 }

您可能应该使用invoke函数在控件线程上运行该函数


您可能应该使用invoke函数在控件线程上运行该函数


使用和/方法之一。

使用和/方法之一。

不能从后台线程更新UI元素。我猜srReceiver是在后台线程上运行的

您可以使用委托更新它:

btn1.Invoke(delegate {
                             btn1.Enabled = "OK";
                             btn1.Text = "X";
                      });

不能从后台线程更新UI元素。我猜srReceiver是在后台线程上运行的

您可以使用委托更新它:

btn1.Invoke(delegate {
                             btn1.Enabled = "OK";
                             btn1.Text = "X";
                      });
至少有20个相同的问题,谷歌查询的第一个结果也会给你们答案。我真的很想听听你们为什么不尝试寻找解决方案。至少有20个相同的问题,谷歌查询的第一个结果会给你们提供解决方案。我真的很想听听你为什么不尝试找到解决办法。