在这个链接http://c-sharp-programming.blogspot.com/2008/07/cross-thread-operation-not-valid.html的代码中,使用了委托来从工作线程更新文本框的值。
我基本上能看出发生了什么,但是这一行的语法特别:
我基本上能看出发生了什么,但是这一行的语法特别:
label1.Invoke(del, new object[] { newText });
我感到困惑。请问有人能解释一下吗?为什么在委托中只有一个参数时,我们要使用新的对象数组语法?
完整代码:
delegate void updateLabelTextDelegate(string newText);
private void updateLabelText(string newText)
{
if (label1.InvokeRequired)
{
// this is worker thread
updateLabelTextDelegate del = new updateLabelTextDelegate(updateLabelText);
label1.Invoke(del, new object[] { newText });
}
else
{
// this is UI thread
label1.Text = newText;
}
}
label1.Invoke(del, newText);
。 - Hans Passant