In the code from this link: <http://c-sharp-programming.blogspot.com/2008/07/cross-thread-operation-not-valid.html>, a delegate is used to update a text box's value from a worker thread.

I can basically see what's happening, but the syntax of this line specifically:

```
label1.Invoke(del, new object[] { newText });

```

is confusing to me. Can someone explain it please? Why do we use a new object array syntax for the delegate when there's only one parameter?

**Full code:**

```
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;
 }
}

```