2010-12-09 2 views
2

실용적인 주제를 읽었지 만 작동하지 않는 것 같습니다.다른 스레드의 클래스에서 텍스트 상자를 업데이트하십시오.

내 응용 프로그램에 대한 이벤트 로그를 만들려고합니다. 그것은 "Form2"를 여는 함수가있는 "Form1"을 열어 시작합니다. "Form2"는 멀티 스레드 TcpListener를 시작합니다. "Form1"의 텍스트 상자를 "Form2"의 TcpListener를 실행하는 스레드에서 편집하는 방법은 무엇입니까? 또한 다른 형식/클래스에서 어떻게 변경 하시겠습니까? 아니면 같은 방식으로 수행됩니까?

예제를 환영 할 수 있으므로 예제를 이해하고 이해할 수 있습니다.

감사합니다 아주 많이

+0

중복 -이 질문에 대한 답변보기 : http://stackoverflow.com/questions/519233/writing-to-a-textbox-from-another-thread – shf301

답변

1

배경 스레드에서 컨트롤을 업데이트 보통 일반적인 문제, 그리고 그것이 BackgroundWorker에를 사용하는 것입니다 할 수있는 가장 간단한 방법입니다. BackgroundWorker 사용에 대한 MSDN 자습서를 확인하십시오. 일부 백그라운드 작업을 수행하고 작업 중 또는 작업의 끝에서 업데이트를 수행 할 때 잘 작동

. 당신이 소켓에서 입력을 기다리고있어 이후 조금 다른 일을 할 수있는 것처럼하지만 보인다. 이 경우 배경 스레드가 수신하는 이벤트를 큐에 추가 한 다음 타이머 이벤트를 사용하여 큐를 처리하고 업데이트가 필요한 모든 컨트롤을 업데이트하는 것이 더 쉬운 경우가 있습니다. 스레딩 타이머가 아닌 Windows Forms 타이머를 사용해야합니다.

관련 문제