如果在多线程编程时,异步线程需要把数据更新到UI,
private void Form1_Load(object sender, EventArgs e)
{
estewwe = new estewwe();
estewwe.BoilerEventLog += Form1_CallBacktd;
}
private void Form1_CallBacktd(object tewt, object tewweo)
{
string serwe = tewt.ToString();
this.listBox1.Items.Add(serwe);
}
如果直接赋值会提示错误:System.InvalidoperationException:”线程间操作无效: 从不是创建控件"listBox1”的线程访问它。
解决办法:
我们只需要使用委托即可更改事件里面赋值
private void Form1_CallBacktd(object tewt, object tewweo)
{
this.Invoke(new Action(() =>
{
this.listBox1.Items.Add(serwe);
textBox1.Text = "";
}));
}
可以自己不用申明委托。使用this.Invoke自带的Action