Regarde du côté des classes AsyncOperationManager et AsyncOperation. Cela devrait correspondre à ce que tu veux.
Sinon sur chaque form cela peut rester relativement simple. Pas besoin de délégué, un de ceux fourni par défaut (MethodInvoker) et une méthode anonyme suffisent. Il me semble que les méthodes anonymes sont disponibles en VB.Net maintenant, avec les lambda expression, mais je n'en suis pas très sûr.
En C# cela donnerait ceci pour la méthode chargée de gérer l'invoke
1 2 3 4 5 6 7 8 9 10 11
| private void InvokeMethod(MethodInvoker invoker)
{
if (this.InvokeRequired)
{
this.Invoke(invoker);
}
else
{
invoker();
}
} |
Tu peux éventuellement en faire une méthode statique et la mettre dans une classe utilitaire. Il suffit d'ajouter en argument de la méthode l'instance du formulaire à manipuler.
Pour l'appel
InvokeMethod(delegate { this.textBox1.Text = "..."; });
Partager