Обновление GUI из другого класса? - PullRequest
0 голосов
/ 02 августа 2010

Возможно, это очень простой вопрос, извините, если это так - я новичок в C #.

У меня есть графический интерфейс WPF для отправки команд получателю.Команды являются текстами ASCII.Теперь я разделил коммуникационную часть в отдельный проект, потому что у меня есть консольные приложения, которые используют методы связи в дополнение к GUI.DLL связи использует асинхронные методы для обычных сокетов.

Теперь проблема в том, что у меня будет циклическая зависимость.GUI должен вызывать подпрограммы связи для отправки сообщений, а подпрограммы должны вызывать GUI для отображения ответов.Я понимаю, что могу создать интерфейс, который наследует коммуникация, и обойти зависимость, но разве это лучший способ сделать это?Или это недостаток в моем дизайне?Я в основном хотел отделить GUI от базового коммуникационного уровня.

1 Ответ

2 голосов
/ 02 августа 2010

Ваша библиотека (dll) не должна обновлять графический интерфейс напрямую.Вы должны иметь это поднять события.В идеале события должны быть на более высоком уровне абстракции («Сообщение получено успешно», а не «Пакет получен успешно», но на самом деле вам решать, какую часть низкоуровневой функциональности библиотеки вы хотите предоставить)

Графический интерфейс (или консольное приложение, или совершенно другая библиотека) теперь может подписываться на события и получать доступ к данным события.Графический интерфейс, поскольку более высокий уровень знает о библиотеке, но библиотека не должна знать о графическом интерфейсе (или приложении консоли)

...