2009-03-25 5 views
2

오늘 아침에 제 동료 중 한 사람이 이상한 코드를 보았습니다. winforms 응용 프로그램에서 전체 Mainform은 참조로 스레드에 제공되었습니다. 그는 폼에서 메서드를 호출하기 위해이 작업을 수행했습니다. UI와 상호 작용할 수있는 것은 없으며 단순한 계산 방법입니다. 나는 이것이 최선의 방법은 아니지만 뭔가 궁금해한다. 스레드에서 Mainform의 메서드를 호출하면 이러한 메서드가 여전히 다중 스레드로 처리됩니까? 아니면 Mainform 내부에서 실행합니까? 스레드에서 Mainfrom의 메서드를 호출 할 때 UI 스레드가 영향을 받습니까?Winforms 다중 스레드 시나리오 질문

+0

알아! 알아! 내가 아니 었어! – TalkingCode

답변

5

다른 스레드에서 호출 된 양식의 함수는 스레드를 호출하는 스레드에서 실행되며 GUI 스레드에는 영향을 미치지 않습니다. 부작용으로 이것은 GUI와 상호 작용하는 함수를 호출하면 예외가 발생한다는 것을 의미합니다.

GUI 스레드에서 호출하려는 경우 가장 쉬운 방법은 Control.Invoke(...)을 호출하여 전달한 대리인이 GUI 스레드에서 실행되도록하여 GUI 상호 작용을 허용하는 것입니다.