De mes recherches, j'ai trouvé que c'est le meilleur moyen de faire des appels inter-threads.
Ce que j'aime à faire est de mettre en place certains génériques événements/gestionnaires afin que je puisse les réutiliser et réduire le code. Par exemple, définir le texte de l'étiquette est quelque chose que je fais beaucoup de choses sur les appels de fil, j'ai donc créer une méthode/de la délégué pour la mise en texte pour les contrôles
delegate void SetTextCallback(Control ctrl, string text);
private void SetText(Control ctrl, string text)
{
if (ctrl.InvokeRequired)
{
ctrl.BeginInvoke(new SetTextCallback(SetText), ctrl, text));
}
else
{
ctrl.Text = text;
}
}
Comme pour l'utilisation, je viens de l'appeler SetText() et l'envoyer à mon contrôle et le texte que je veux pour elle. Cela me permet de ré-utiliser mon délégués assez simplement. Je fais la même chose pour d'autres croix fil des actions de réglage de la couleur, visible, permis, etc.
C'est assez spécifique de Windows forms même si elle peut être appliquée à d'autres situations si nécessaire.