2010-08-02 85 views
0

也许这是一个非常基本的问题,请原谅我,如果它是---我是C#初学者。从另一个类更新GUI?

我有一个用于发送命令到接收器的WPF GUI。这些命令是ASCII文本。现在,我将通信部分分离为单独的项目,因为除了GUI之外,我还有使用通信方法的控制台应用程序。通信DLL使用正常套接字上的异步方法。

现在的问题是,我将有一个循环依赖。 GUI需要调用通信例程发送消息,例程需要调用GUI来显示响应。我知道我可以创建一个通信继承的接口并绕过依赖关系,但是这是做到这一点的最佳方式吗?或者这是我设计中的缺陷?我基本上想要将GUI与底层通信层分离开来。

回答

2

您的库(dll)不应该直接更新GUI。你应该让它引发事件。理想情况下,事件也会处于更高的抽象级别(“消息已成功接收”,而不是“已成功接收数据包”,但是您真正需要知道库的低级功能多少)

GUI(或控制台应用程序或完全不同的库)现在可以订阅事件并访问事件数据。作为更高层的GUI,知道库,但库不应该知道GUI(或控制台应用程序)