1. 개념
Invoke, InvokeRequired, BeginInvoke 의 개념 모두 C# Form 프로그맹을 하면서 나오는 용어들이다.
해당 용어들을 이해하기 위해서는 쓰레드에 대한 개념이해가 선행이 되어야한다.
기본적으로 C# Form 프로그래밍에서는 MainThread(UI Thread) OtherThread( Work Thread)로 분리되어 작업이 된다.
폼컨트롤 제어와 작업을 분리되어 하지 않고 MainThread가 모든 작업을 맡아 한다면 MainThread가 작업을 처리하는동안 사용자가 보고있는 Form이 반응 안하는 것처럼 느껴지고 실제로도 멈춰있게 된다.
그래서 분리해서 작업을 하게 된다.
그럼 위 3가지의 개념을 이해하기 위해 임의의 두 Thread가 있다고 가정하자.
MainThread(UI Thread) : Form의 컨트롤의 제어를 담당함 ( 색, 위치 등등)
OtherThread : 임의 작업 A를 수행
하나의 예시를 들어보자 OtherThread에서 임의 작업 A를 마치고 버튼의 색을 빨간색으로 변경하고 싶다고 해보자 불가능하다.
왜냐하면 컨트롤을 생성한 MainThread에서만 접근이 가능하다 위 작업을 하려고하면 CrossThread Exception이 발생한다.
이 때 필요한 것이 Invoke, BeginInvoke이다.
그리고 이게 MainThread인지 OtherThread인지 구별해주는 InvokeRequired이 있는것이다.
Invoke가 필요한 Thread(OtherThread)라면 True MainThread(UI Thread)라면 False를 반환한다.
2. Invoke, BeginInvoke 시퀀스 다이어그램
'프로그래밍 > C#' 카테고리의 다른 글
[C#] WebDriver 시크릿(Secret)모드 실행하기! (0) | 2019.01.14 |
---|---|
[C#] 텍스트파일 여는 방법 (0) | 2019.01.05 |
[C#] Selenium WebDriver, 특정 요소가 화면에 보일 때 까지 기다리기! (1) | 2019.01.05 |
[C#] Selenium WebDriver 자바스크립트 실행하기! (0) | 2019.01.05 |
[C#] Selenium WebDriver 느리게 입력 ( 타이핑 효과 주기) (1) | 2019.01.05 |