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个相同的问题,谷歌查询的第一个结果会给你们提供解决方案。我真的很想听听你为什么不尝试找到解决办法。