Obtenir le répartiteur d'interface utilisateur dans la bibliothèque de classes
Je souhaiterais créer une bibliothèque de classes et de planifier l'utilisation de multi-threading (c'est à dire BackgroundWorker
). Je vais regarder pour le contexte du thread, à partir de laquelle les mises à jour sont faites pour les champs, si j'ai l'intention de les lier à l'interface de la bibliothèque de consommer frontend. Ce n'est pas une bonne idée de passer la référence de l'interface graphique, le répartiteur à la bibliothèque, comme je l'ai lu. Mais comment puis-je accéder au répartiteur de l'application qui va utiliser la bibliothèque? Est-ce possible?
J'ai essayé Application.Current.Dispatcher
et a ajouté une référence à WindowBase
(que je n'ai pas eu la possibilité d'ajouter des System.Windows
), mais ne peut toujours pas régler le répartiteur de l'objet.
source d'informationauteur rdoubleui
Vous devez vous connecter pour publier un commentaire.
Oh, haha (désolé, mais c'est une de ces choses stupides) de la classe d'Application est défini dans PresentationFramework.dll. Vous avez besoin de référence que pour être en mesure d'accéder à l'expéditeur par
Application.Current.Dispatcher
.J'ai eu le même problème c'est à dire pas être en mesure de résoudre Application.Actuel.Répartiteur et fini par passer le client gui répartiteur à la bibliothèque, qui tient juste un Répartiteur ref (référence WindowsBase + à l'aide du Système.De Windows.Threading).
Je préfère cette option que le fait d'avoir mon non graphique lib porter une ref à PresentationFramework.dll (ce qui ne semble pas naturel).
Je suppose que son 6 de l'un, une demi-douzaine de l'autre...
Si vous vous assurez (comme avec les membres statiques d'une classe) que vous avez une référence pratique à l'INTERFACE utilisateur
Dispatcher
vous pouvez le faire:Un ou deux frameworks MVVM, j'ai cherché à faire des trucs comme ça.
Si vous ne voulez pas passer cette
Dispatcher
de référence à la bibliothèque du Cio, les conteneurs sont une option. Vous pouvez également mettre cela dans une Common.dll pour les classes et les interfaces que l'exe et les bibliothèques de classes ont besoin de référence. L'exe pouvez configurer la référence correcte, et la bibliothèque de classe peut appeler laRun()
méthode.