c#创建委托时出现的错误是什么?
本文关键字:错误 是什么 创建 | 更新日期: 2023-09-27 18:15:59
我试图写这段代码来更新textBox的文本,而backgroundworker正在工作。
#region variables
public delegate void updateTextBoxDelegate(string s, bool directory);
updateTextBoxDelegate delegateTextBox;
#endregion
#region somewhereInsideForm1Constructor
delegateTextBox = new updateTextBoxDelegate(updateTextBox);
#endregion
#region methods
public void updateTextBox(string s, bool directory)
{
if (directory)
{
textBox1.Text += s + System.Environment.NewLine;
}
else
{
textBox1.Text += " --> " + s + System.Environment.NewLine;
}
}
#endregion
#region somewhereInsideBackGroundWorker_doWork
delegateTextBox(path.FullName, true);
#endregion
,在这种情况下会出现一个异常的交叉线程:
:
textBox1.Text += s + System.Environment.NewLine;
:
delegateTextBox(path.FullName, true);
错误是什么??
谢谢!
如果我说得好,后台线程不能直接操作UI控件。如果您正在使用WPF,您可以尝试使用Dispatcher。不要创建自己的线程,为后台工作执行以下操作
Object[] args = {path.FullName, true };
this.Dispatcher.BeginInvoke(delegateTextBox, args);