▶ 간략 설명

※ async/await 란
비동기 프로그래밍을 좀 더 쉽게 하기위해 5.0버전부터 들어온 기능
쓰레드가 정지되지 않고 UI작업(마우스 클릭, 화면 수정 등등)을 할 수 있도록 컴파일러가 await를 만나면
자동으로 추가 후 처리.
즉, Task가 UI Thread에 돌던지, Worker thread에서 돌던지 상관없이 Task 완료 후 실행문들을 await실행 전 Thread에서
처리.
▷ 소스 설명
await에 Task정의 후 동작
실행 순서
1. Main 시작
2. Run 시작
3. Main 끝 (비동기로 실행되는 부분을 확인 가능)
4. popo함수 시작
5. popo함수 끝
6. Run 끝
※ invoke/beginInvoke 란
C#에서 오래걸리는 작업들을 처리할 때 Thread를 사용해야한다.
사용하지 않는다면 C#의 Winform에서는
일시적으로 화면이 멈추게된다.(응답없음)
이유는 Main Thread가 UI 컨트롤을 제어하지 못하기 때문이다.(Main Thread에서 UI핸들링)
그렇다고 Thread를 사용하게 되면 '크로스 스레딩' 문제가 발생하게 된다.
그래서 Invoke작업이 필요하다.
각기 다른 스레드에서 접근할 수 없는 Winform Control처리에
대해 작업을 처리하게 만들어 준다고 생각하면 이해가 쉽다.
Invoke로 화면 멈추는 현상을 해결할 수 있을 지라도 또 하나의 문제가 있다.
Invoke 작업이 끝나기 전에는 그 뒤의 연산이 호출이 종료될 때까지 진행되지 않는다.
그래서 나온 것이 => Begin Invoke이다.
'- 개발 > C# 개발정리' 카테고리의 다른 글
C# Boxing, UnBoxing, UpCasting, DownCasting 간단 설명 질문 (1) | 2023.12.27 |
---|---|
[C#] Parallel 사용 방법 /예제/정의/추가적인작업 (0) | 2023.12.26 |