2010-08-02 71 views
0

也許這是一個非常基本的問題,請原諒我,如果它是---我是C#初學者。從另一個類更新GUI?

我有一個用於發送命令到接收器的WPF GUI。這些命令是ASCII文本。現在,我將通信部分分離爲單獨的項目,因爲除了GUI之外,我還有使用通信方法的控制檯應用程序。通信DLL使用正常套接字上的異步方法。

現在的問題是,我將有一個循環依賴。 GUI需要調用通信例程發送消息,例程需要調用GUI來顯示響應。我知道我可以創建一個通信繼承的接口並繞過依賴關係,但是這是做到這一點的最佳方式嗎?或者這是我設計中的缺陷?我基本上想要將GUI與底層通信層分離開來。

回答

2

您的庫(dll)不應該直接更新GUI。你應該讓它引發事件。理想情況下,事件也會處於更高的抽象級別(「消息已成功接收」,而不是「已成功接收數據包」,但是您真正需要知道庫的低級功能多少)

GUI(或控制檯應用程序或完全不同的庫)現在可以訂閱事件並訪問事件數據。作爲更高層的GUI,知道庫,但庫不應該知道GUI(或控制檯應用程序)