在此鏈接的代碼中:http://c-sharp-programming.blogspot.com/2008/07/cross-thread-operation-not-valid.html,委託用於從工作線程更新文本框的值。解釋委託調用的語法c#
我基本上可以看到發生了什麼,但此行的語法明確:
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()不是委託。只要寫'label1.Invoke(del,newText);' – 2012-04-20 21:12:55
他說label1.Invoke()是一個委託嗎?我沒有讀到。另外,很好的指出你可以使用一個單獨的參數,而不需要顯式對象[],這要歸功於params。 – payo 2012-04-20 21:19:06