2009-10-12 3 views
0

com 포트를 통해 임베디드 장치와 통신하는 작은 GUI 기반 vb.net 프로그램을 작성했습니다. GUI 코드에는 임베디드 장치에 대한 모든 통신 (COM 포트 장치, 통신 프로토콜, 구문 분석 정보, 각 읽기 후에 장치 관련 정보 보유)을 통해 처리되는 클래스가 들어 있습니다.이 클래스를 EDComms라고합니다.VB.net 간단한 스레드 기반 GUI 기반 프로그램. 스레드를 넣을 곳

로그 파일을 다운로드 할 때 EDComms 객체가 백그라운드에서 실행되어 다시보고 될 수 있도록 스레드를 추가하려고했습니다. 가끔 장치에서 로그 파일을 가져 오는 데 약간의 시간이 걸릴 수 있습니다.

So. backgroundworker 스레드에서 EDComm을 상속해야합니까? 아니면 EDComms의 구성원으로 백그라운드 작업자 스레드가 있어야합니까?

지금 나는 두 번째 선택을 할 것입니다. 이제해야 할 일은 GUI에서 두 명의 대리인을 등록하여 작업 진행 상태를 알리고 작업 완료를 알리는 func을 작성하는 것입니다.

이 두 가지 중에서 내가 더 나은 것을 골랐습니까? 또는이 두 가지보다 나은 선택이 있습니까? 아마도 GUI의 구성원으로 스레드가 있습니까?

감사합니다.

답변

1

클래스에서 상속하면 IS A 관계를 암시하는 것입니다. EDComms는 스레드가 아닙니다. 스레드를 관리하게하는 것이 한 가지 방법이거나, 클래스 외부에 배경 작업자가 모두있을 수도 있습니다. 그러나 옵션이되어서는 안되는 유일한 옵션은 상속 옵션입니다.

귀하의 신청서에 대해 알고있는 것을 바탕으로 최선의 선택을하셨습니다.

1

정말 그렇습니다. 설계 관점에서 스레드가 의미하는 바를 더 중요하게 생각합니다. EDComms 객체가 작업 자체를 수행 할 것인가 아니면 EDComms 객체가 단순히 작업자를 감싸고 통신 할 인터페이스를 제공하겠습니까? 개인적으로, 나는 당신의 선택을 더 좋아합니다, 나는 그것이 논리적으로 합리적이라고 생각합니다,하지만 그건 제 생각입니다.