Mon problème est le suivant:Est-il possible de surcharger un thread en utilisant ISynchronizeInvoke.BeginInvoke()?
J'ai deux threads, mon thread d'interface utilisateur et un thread de travail. Mon thread de travail s'exécute dans une classe séparée qui est instanciée par le formulaire, qui se passe comme ISynchronizeInvoke
à la classe worker, qui utilise ensuite Invoke
sur cette interface pour appeler ses événements, qui fournissent des mises à jour d'état à l'interface utilisateur pour l'affichage. Cela fonctionne à merveille. J'ai remarqué que mon fil d'arrière-plan semblait fonctionner lentement, donc j'ai changé l'appel à Invoke
en BeginInvoke
, pensant que "je ne fais que fournir des mises à jour de progrès, il n'a pas besoin d'être exactement synchrone, pas de mal fait "sauf que maintenant je reçois des bizarreries avec la mise à jour de progrès. Ma barre de progression se met à jour, mais pas le texte de l'étiquette, et si je change de fenêtre pour essayer de revenir en arrière, elle se comporte comme si le fil de l'interface utilisateur était verrouillé. souvent) surchargent tellement le thread d'UI qu'il ne traite jamais les messages. Est-ce possible ou y a-t-il quelque chose d'autre ici?