Invoquer et BeginInvoke

Salutations,
Je développe une application en C#. Pour le moment, je m'occupe avec filetage, et j'ai une question que j'ai dans mon esprit.
Quelle est la différence entre les Invoquer et de BeginInvoke?
J'ai lu un thread et j'ai trouvé quelques informations utiles ici: ici

Cependant quelle est la différence entre les Invoquer et de BeginInvoke dans le code suivant:

private void ProcessRoutine()
{
   for (int nValue = StartFrom; nValue <= EndTo; nValue++)
   {
      this.Invoke(this.MyDelegate, nValue);
      //this.BeginInvoke(this.MyDelegate, nValue);
   }
   MessageBox.Show("Counting complete!");
}
private void MessageHandler(int progress)
{
    lblStatus.Text = lblStatus.Text = "Processing item: " + progress.ToString();
    progressBar1.Value = progress;
}

où MyDelegate est une référence à MessageHandler fonction.

J'ai remarqué que l'utilisation de BeginInvoke lblStatus.Le texte n'est pas actualisé où l'utilisation d'Invoquer rafraîchit l'étiquette.
En outre, je sais qui Appeler attend son exécution complète.
La plus importante affaire qui m'intéresse c'est pourquoi il y a une différence dans le renouvellement de texte de l'étiquette dans ce cas.

OriginalL'auteur Piotr Ptak | 2009-12-15