/// <summary>
 /// Executes the given operation on a different thread, and waits for the result.
 /// </summary>
 /// <param name="sender">
 /// Source of the event.
 /// </param>
 /// <param name="e">
 /// T event information.
 /// </param>
 public void Invoke(object sender, TEventArgs e)
 {
     if (IsWeak)
     {
         _weakEventHandler.Invoke(sender, e);
     }
     else
     {
         _strongEventHandler.Invoke(sender, e);
     }
 }