Appeler d'un Gestionnaire d'événements

J'ai le Gestionnaire suivant:

private EventHandler<MyEventArgs> _myEventHandler;
public event EventHandler<MyEventArgs> MyEvent
{
  add { _myEventHandler += value; }
  remove { _myEventHandler -= value; }
}  

Quelqu'un pourrait expliquer la différence entre les extraits suivants?

Extrait De EventHandler (A):

//Snippet A:
if (_myEventHandler != null)
{
  _myEventHandler(new MyEventArgs());
}

Extrait De BeginInvoke (B):

//Snippet B:
if (_myEventHandler != null)
{
  _myEventHandler.BeginInvoke(new MyEventArgs(), ar =>
  {
    var del = (EventHandler<MyEventArgs>)ar.AsyncState;
    del.EndInvoke(ar);
  }, _myEventHandler);
}

De précisions: Quelle est la différence entre invoquant un Gestionnaire d'événements "comme il est", et à l'aide de BeginInvoke?

OriginalL'auteur WaltiD | 2011-08-11