2010-01-22 3 views
1

인사말, 프로그래밍에 익숙하지 않습니다.C# Invoke Action 크로스 스레드 액세스

내 응용 프로그램이 대리자를 사용하여 다른 클래스/개체에있는 메서드를 처리/실행하는 순간.

하지만 나는 separte 스레드에 거주한다는 오류가 표시되었습니다. 그래서 웹을 검색 한 후 나는이 함께했다 : 세드릭이 잘 근무하고있다

this.Invoke(new Action(delegate() { this.ChatRichTextBox.AppendText(EventArgs.commMessage); })); 

내가 아무 생각에 동의합니다. 코드를 붙여 넣기 만하면됩니다.

현재 컴파일러가 다르게 수행해야 할 필요가 있지만 그래도 수행 할 수 없다.> <! =이 작업 내에서의 작업.

이것을 구현하는 가장 좋은 방법에 대해 조언 해주십시오.

대단히 감사합니다.

+0

난 당신이 무슨 뜻인지 이해가 안 돼요! "이><= 작업을 할 질수". 그 코드를 게시 할 수 있습니까? – hackerhasid

+0

나는 지금 내 컴퓨터에서 멀리 떨어져있을 것이다. 그때까지. 감사. – iTEgg

답변

4

Windows Forms 컨트롤에 대한 액세스는 본질적으로 스레드로부터 안전하지 않으므로 입니다. 두 개 이상의 스레드가 컨트롤의 상태를 조작하면 일관성없는 상태로 제어를 강제로 수행 할 수 있습니다. 기타 스레드 관련 버그가 발생할 수 있습니다 (예 : ). 컨트롤에 액세스가 스레드 안전 모드로 수행되도록하려면 이 중요합니다.

호출 방법을 사용하지 않고 제어 만든 이외 스레드의 제어를 호출 불안전하다.

+0

이 작업은>

+0

크로스 스레드 작업 (OP에서 이해할 수 없음)에 대해 설명합니다. –

관련 문제