请问,为什么这样编写的委托会出现“从不是创建控件“textBox1”的线程访问它。”
请教,为什么这样编写的委托会出现“从不是创建控件“textBox1”的线程访问它。”
从一个窗体到另外一个窗体的委托没有问题。
然后从一个非窗体类 到 窗体 的委托时,出现错误。信息如下:
编写的程序代码如下
------解决思路----------------------
委托绑定的方法使用Invoke或者BeginInvoke调用
------解决思路----------------------
用了异步就要用异步的方法
------解决思路----------------------
简单点说就是你的程序里面创建那个控件线程是A,但是你现在调用这个控件的线程是B。
------解决思路----------------------
搜一搜:委托操作UI,一大把代码可以抄
先看看人家完整的讲解和例子,然后copy
不要从只言片语里修修改改
------解决思路----------------------
多线程操作UI元素啊,要使用委托的。
从一个窗体到另外一个窗体的委托没有问题。
然后从一个非窗体类 到 窗体 的委托时,出现错误。信息如下:
编写的程序代码如下
namespace thread_product_consume2
{
public delegate void UpdataTextBox(string str);
public class Sushi
{
public UpdataTextBox updata_TXT;
..............
}
class CellConsum { .....}
class CellProd{.....}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
this.textBox1.Text = null;
Add_Text("ABC1");
int result = 0;
Sushi FoodSushi = new Sushi();
FoodSushi.updata_TXT = new UpdataTextBox( Add_Text);
//用单元初始化二个实例
CellProd prod = new CellProd(FoodSushi, 20);
CellConsum consum = new CellConsum(FoodSushi, 20);
}
//在文本框输出文字
public void Add_Text(string str)
{
this.textBox1.Text +=str;
}
}
------解决思路----------------------
委托绑定的方法使用Invoke或者BeginInvoke调用
public void Add_Text(string str)
{
this.textBox1.BeginInvoke((Action)delegate{
this.textBox1.Text +=str;
});
}
------解决思路----------------------
用了异步就要用异步的方法
------解决思路----------------------
简单点说就是你的程序里面创建那个控件线程是A,但是你现在调用这个控件的线程是B。
------解决思路----------------------
搜一搜:委托操作UI,一大把代码可以抄
先看看人家完整的讲解和例子,然后copy
不要从只言片语里修修改改
------解决思路----------------------
多线程操作UI元素啊,要使用委托的。