2013-04-09 1 views
0

내 컴퓨터에 여러 개의 IP 장치가 연결되어 있습니다. 각 장치는 별도의 스레드를 사용하여 연결됩니다. 각 스레드는 클래스 인스턴스를 사용하여 함수에 할당되고 소켓 프로그래밍을 사용하여 통신합니다. 모든 장치가 PC 소프트웨어에 독립적으로 데이터를 전송합니다. 이제이 데이터를 기본 폼 (다른 클래스)에 보내서 표시해야합니다. 그렇게하는 방법 ??C# NET에서 여러 스레드의 데이터를 주 폼으로 보냅니다.

미리 감사드립니다.

+0

더 구체적인 것이 필요한 경우 질문을 업데이트하고 자세한 내용과 일부 코드를 제공해야합니다. – Zoka

답변

0

(기본 폼의) 콜백 함수를 각 인스턴스에 전달하는 것이 좋습니다. 그런 다음 각 스레드에 ID를 할당하고이 콜백을 호출 할 때이 스레드 ID를 데이터와 함께 전달하여 두 스레드를 구별 할 수 있습니다.

+0

Zoka에게 감사드립니다. 델리게이트 - 이벤트 처리를 사용하여 처리 할 수 ​​있습니다. – Ansul

0

하나의 방법은 모든 스레드 (주 포함)가 알고 있고 수신 된 데이터를 넣을 수있는 객체를 갖는 것입니다. 주 스레드/양식은 수시로 그것을 읽어야합니다. 쓰기/읽기 전에이 객체를 잠 그거나 잠금 해제해야합니다.

http://msdn.microsoft.com/en-us/magazine/cc163744.aspx

+0

답장을 보내 주셔서 감사합니다. 이 경우 나는 시간을 내 개체를 모니터링 할 필요가 있다고 생각합니다. 사실 나는 데이터베이스에 액세스해야 할 때 개별 스레드가받은 순간에 데이터를 기본 클래스로 보내고 일부 결정을 내린 다음 IP 장치로 응답을 보내려고합니다. DELEGATE - EVENT 개념을 사용할 수 있습니까 (멀티 스레딩의 경우)? – Ansul

0

그것은이 방법을 수행 할 수 있습니다

Thread 클래스 : 1. 선언 대리인 --- 공공 대리인이 무효 updateValue에 (o_sender, 문자열 값); 2. 델리게이트 형식의 이벤트 선언 ----- 공개 이벤트 UPDATEVALUE 업데이트; 3. 데이터를 수신 할 때마다이 이벤트를 발생시킵니다. ------ update (this, value);

Main 클래스 :

  1. 내가 만드는 오전 각 스레드에 대한 이벤트를 추가 - Threadclass의 TC = 새로운 Threadclass(); tc.update + = 뉴 Threadclass.UPDATEVALUE (DisplayValue)
  2. DisplayValue 갱신 값을 표시 MainClass의 함수이다

.

관련 문제