Quelle est la différence entre vérifier InvokeRequired
et appeler Invoke
méthode pour un contrôle et pour le formulaire parent si je veux gérer le contrôle d'un autre thread?Y a-t-il une différence entre l'utilisation d'Invoke pour le formulaire parent ou pour le contrôle cible?
if (theForm.InvokeRequired)
Invoke(...)
Ou
if (myControl.InvokeRequired)
myControl.Invoke(...)
De MSDN:
La méthode Invoke recherche jusqu'à la chaîne mère du contrôle jusqu'à ce qu'il trouve un contrôle ou une forme qui a une poignée de fenêtre si de la commande actuelle sous-jacente La poignée de la fenêtre n'existe pas encore.
Techniquement, il est possible que ce ne soit pas le cas. Très rare, mais Windows supporte pinPoking SetParent() pour casser cette règle. Adobe Acrobat Reader le fait par exemple. L'encapsuleur AxHost est cependant toujours associé au thread UI. Winforms va vous combattre bec et ongles pour vous empêcher de le faire. Tu peux gagner. –