2010-08-02 3 views
0

아마도 이것이 매우 기본적인 질문입니다. 제게 사죄 해 주시면 --- 저는 C# 초보자입니다.다른 클래스에서 GUI를 업데이트 하시겠습니까?

받는 사람에게 명령을 보내기위한 WPF GUI가 있습니다. 명령은 ASCII 텍스트입니다. 이제 GUI 외에 통신 방법을 사용하는 콘솔 응용 프로그램이 있으므로 통신 부분을 별도의 프로젝트로 분리했습니다. 통신 DLL은 일반 소켓에서 비동기 메소드를 사용합니다.

이제는 순환 종속성이 문제입니다. GUI는 메시지를 보내기 위해 통신 루틴을 호출해야하며 루틴은 응답을 표시하기 위해 GUI를 호출해야합니다. 나는 통신이 상속하고 의존성을 해결할 수있는 인터페이스를 만들 수 있다는 것을 이해한다. 그러나 이것이 최선의 방법인가? 아니면 내 디자인의 결함입니까? 기본적으로 기본 통신 레이어에서 GUI를 분리하려고했습니다.

답변

2

라이브러리 (dll)가 GUI를 직접 업데이트하지 않아야합니다. 이벤트를 발생시켜야합니다. 이상적으로 이벤트는 더 높은 수준의 추상화 ("Packet Received Successfully"보다는 "Message Received Successfully")가 될 것이지만, 노출하고자하는 라이브러리의 저수준 기능의 양은 얼마입니까?

GUI (또는 콘솔 앱 또는 완전히 다른 라이브러리)가 이제 이벤트를 구독하고 이벤트 데이터에 액세스 할 수 있습니다. 상위 계층 인 GUI는 라이브러리에 대해 알고 있지만 라이브러리는 GUI (또는 콘솔 응용 프로그램)에 대해 알 필요가 없습니다.

관련 문제