在使用多线程时,有的时候需要向窗口内的控件赋值。
如果我们值写
[C#] 纯文本查看 复制代码 Thread gs = new Thread(函数方法名);
gs.Start();
当函数方法中出现给窗口控件赋值的情况就会出现System.InvalidOperationException:“线程间操作无效: 从不是创建控件“...”的错误
解决方法一
[C#] 纯文本查看 复制代码 public Form1()
{
InitializeComponent();
CheckForIllegalCrossThreadCalls = false; //只要增加这一句就可以对窗口控件赋值了
}
解决方法二 委托
[C#] 纯文本查看 复制代码 if (sMsgBox.InvokeRequired)
{
this.sMsgBox.Invoke(new Action(() =>
{
this.sMsgBox.AppendText(string.Format("{0} {1}\r\n",DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"),txt));
this.sMsgBox.Focus();
}));
}
else
{
this.sMsgBox.AppendText(string.Format("{0} {1}\r\n", DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"), txt));
this.sMsgBox.Focus();
}
|