このリンクのコード: http://c-sharp-programming.blogspot.com/2008/07/cross-thread-operation-not-valid.htmlでは、デリゲートを使用してワーカーからテキスト ボックスの値を更新します。スレッド。
私は基本的に何が起こっているかを見ることができますが、具体的にはこの行の構文は次のとおりです。
label1.Invoke(del, new object[] { newText });
は私を混乱させます。誰か説明してくれませんか?パラメータが 1 つしかないのに、デリゲートに新しいオブジェクト配列構文を使用するのはなぜですか?
完全なコード:
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;
}
}