L'appel d'un thread d'interface utilisateur à partir d'un thread de travail est discuté plusieurs fois et nous savons pourquoi utiliser BeginInvoke() au lieu de Invoke(). J'ai récemment posté this question et après avoir fait quelques recherches, j'ai découvert qu'il y a au moins trois façons différentes (en interne, elles peuvent être identiques) d'invoquer (de manière asynchrone) quelque chose sur le thread de l'interface utilisateur.control.BeginInvoke() Vs Dispatcher Vs SynchronizationContext Vs. .. - FIABILITÉ
Control.BeginInvoke()
- L'utilisation
SynchronizatoinContext
classe - En utilisant
Dispatcher.BeginInvoke(priority..)
Quelqu'un peut-il me dire ce qui est un moyen fiable d'appeler de manière asynchrone une méthode à exécuter sur thread d'interface utilisateur. Une expérience? Je vois Dispatcher.BeginInvoke a le composant prioritaire, le rend-il plus fiable?
Contexte:
nous utilisons someControl.BeginInvoke()
mais on a remarqué que, parfois, (malheureusement seulement dans l'environnement de production d'utilisateur final) le délégué passé à BeginInvoke is
jamais exécuté ce qui me fait croire que le message de message qu'il crée se perd. Nous voulons un moyen fiable de communiquer avec le thread de l'interface utilisateur. control.Invoke()
parfois suspendre l'interface utilisateur, donc nous ne voulons pas y aller non plus.
Ne confondez pas WinForms avec WPF. – SLaks
J'ai un problème similaire ... avez-vous réussi à résoudre le problème? –
même ici, n'importe quelle mise à jour? – Pedro77