모든 WinForm 컨트롤들은 InvokeRequired 라는 속성을 가지고 있는데, 이 속성은 현재 문장을 실행하는 쓰레드가 컨트롤을 생성한 UI 쓰레드인지 아닌지를 알려준다. WinForm 멀티쓰레딩에서 모든 UI 컨트롤은 자신을 생성한 UI 쓰레드에서 컨트롤 객체를 변경 혹은 쿼리하여야 한다. 멀티쓰레딩 환경에서 Worker Thread가 엑세스할 수 있는 메서드의 경우, InvokeRequired 속성을 체크해서 만약 UI 쓰레드가 아니면 Invoke() 혹은 BeginInvoke()를 써서 UI 쓰레드로 호출을 보낸다.
참조 링크 : http://www.csharpstudy.com/WinForms/WinForms-thread.aspx