因为Winform应用程序是单线程的。对于某一个控件来说,只有创建该控件的线程才能修改它的值。对Winform来说,在窗体中拖一个控件,它由程序的主线程创建。因而,如果我们又另开一个线程,那么如果我们想要在这个线程中直接去修改该控件的值,就会报错。
那么如果,我们仍然想要改控件的值,该如何做呢?
我们可以通过,在这个子线程中,通过this.Invoke() 或 this.BeginInvoke()的方式通过执行委托的方式,在委托里去修改,就可以。
代码如下:
This.Invoke(new Action(()=>{
Label1.Text=”您好!”;
}));