title: What should be passed for BeginInvoke's @object parameter?
body: <p>I have an event delegate that is defined as follows:</p>
  
  <pre><code>public delegate void CallbackDelegate(Data data);
  public event CallbackDelegate OnDataComplete;
  </code></pre>
  
  <p>I raise the event asynchronously:</p>
  
  <pre><code>// Raise the OnDataComplete event
  OnDataComplete.BeginInvoke(new Data(), null, null);
  </code></pre>
  
  <p>Subsequently, the signature of <code>BeginInvoke</code> looks like: </p>
  
  <pre><code>IAsyncResult CallbackDelegate.BeginInvoke(Data data, AsyncCallback callback, object @object)
  </code></pre>
  
  <p>In most examples I've seen <code>BeginInvoke</code> is called with the <code>@object</code> parameter being <code>null</code>, but I can't find the documentation which explains what is the purpose of that parameter. </p>
  
  <p><strong>So what is the purpose of that parameter? What can we use it for?</strong></p>