C#子线程改变UI的方法

时间:2021-04-14 05:12:02
相信许多人在使用winform时候经常会遇到在自己新起一个线程test(称为辅助线程),当在test中要修改主界面的一些内容时,经常会出现一些异常,具体什么类型异常不做解释,直说解决方法:
code:
 public partial class Test: Form
    {
private delegate void TextBoxDelegate(string value);//定义委托
static void Main(string[] args) {
......
//新起一个辅助线程
Thread test = new Thread(new ThreadStart(Test));
test.Start();
}
Public void Test( )
{
....
//下面使用委托
TextBoxDelegate sourceUrlTextBox = new TextBoxDelegate(SetUrlTextBoxEmpty); //this.Invoke可以使该委托在主线程上运行
this.Invoke(sourceUrlTextBox, new object[] { "It is an example!" });
....
}
Public void SetUrlTextBoxEmpty(string value)
{
this.textBox.Text=value;//给主界面上的textBox控件赋值
}

    }


假如不用委托的话,那么调试会出现异常,不过直接运行是不会报错的。如果是改变datagridview的话,就会出现一个大红叉