C#用副线程改主线程(UI线程)的控件属性的步骤(包括Winform和WPF)

C#用副线程改主线程(UI线程)的控件属性的方法(包括Winform和WPF)

C#用副线程去试图修改主线程的UI控件会报出异常,解决方案是使用副线程注册事件通知主线程自己去修改UI控件

在winform中,方法如下

private void button1_Click(object sender, EventArgs e)
{
    Thread myThread = new Thread (new ThreadStart(fun));
    myThread.Start();
}

private void fun()
{
    textBox1.BeginInvoke(new Action(()=>{textBox1.Text="hello";}));
}

 

在WPF中,方法如下

 1 private void button1_Click(object sender, EventArgs e)
 2 {
 3     Thread myThread = new Thread (new ThreadStart(fun));
 4     myThread.Start();
 5 }
 6 
 7 private void fun()
 8 {
 9     TextBox1.Dispatcher.BeginInvoke(new Action(()=>{TextBox1.AppendText("hello");}));        
10 }

 

  

 

1楼白龙_YI
这个方式好,以前都是专门创建一个委托,在子线程中判断控件是否属于当前线程再做修改