2010-08-02 3 views
0

Peut-être que c'est une question très fondamentale, s'il vous plaît pardonnez-moi si c'est --- je suis un débutant en C#.Mise à jour de l'interface graphique d'une classe différente?

J'ai une interface graphique WPF pour envoyer des commandes à un récepteur. Les commandes sont des textes ASCII. Maintenant, j'ai séparé la partie communication dans un projet distinct car j'ai des applications console qui utilisent les méthodes de communication en plus de l'interface graphique. La DLL de communication utilise des méthodes asynchrones sur des sockets normales.

Maintenant, le problème est que j'aurai une dépendance circulaire. L'interface graphique doit appeler des routines de communication pour envoyer des messages, et les routines doivent appeler l'interface graphique pour afficher les réponses. Je comprends que je pourrais faire une interface dont la communication hérite et contourner la dépendance, mais est-ce la meilleure façon de le faire? Ou est-ce un défaut dans ma conception? Je voulais essentiellement découpler l'interface graphique de la couche de communication sous-jacente.

Répondre

2

Votre bibliothèque (dll) ne doit pas mettre à jour l'interface graphique directement. Vous devriez le faire soulever des événements. Idéalement, les événements seraient à un plus haut niveau d'abstraction ("Message Received Successfully" plutôt que "Packet Received Successfully", mais c'est vraiment à vous de décider quelle fonctionnalité de la bibliothèque que vous souhaitez exposer)

L'interface graphique (ou l'application de la console ou une bibliothèque complètement différente) peut maintenant s'abonner aux événements et accéder aux données de l'événement. L'interface graphique, en tant que couche supérieure, connaît la bibliothèque, mais la bibliothèque ne doit pas connaître l'interface graphique (ou l'application de la console)

Questions connexes