[C# Async/await/Invoke/beginInvoke/크로스스레딩] 비동기 처리 방법 /예제소스

2023. 12. 26. 18:15·- 개발/C# 개발정리
반응형

▶ 간략 설명


※ 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
'- 개발/C# 개발정리' 카테고리의 다른 글
  • C# Boxing, UnBoxing, UpCasting, DownCasting 간단 설명 질문
  • [C#] Parallel 사용 방법 /예제/정의/추가적인작업
고미-
고미-
개발자의 블로그
    반응형
  • 고미-
    곰이네 Blog
    고미-
  • 전체
    오늘
    어제
    • 분류 전체보기 (51)
      • - 일상후기 (20)
        • IT (2)
        • 맛집 (9)
        • 애기들 (2)
      • - 개발 (8)
        • C# 개발정리 (3)
        • C# WPF (1)
        • Github (1)
        • Python (1)
      • - 자기개발 (1)
      • - 기타 (7)
  • 블로그 메뉴

    • 홈
    • > github
  • 링크

  • 공지사항

    • 바쁜 일상 속 잠깐 클릭해주세요!
  • 인기 글

  • 태그

    추천
    모바일
    카페
    이벤트
    게임
    솔직후기
    애기
    삼국지책략전
    C#
    블로그
    주차
    디저트
    귀여움
    삼국지
    말티즈
    커플
    향동
    가성비
    카카오톡
    선물
    빵구독
    내돈내산
    맛집
    애드센스
    프로그램
    무료
    생일
    고양
    꽃
    울산
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
고미-
[C# Async/await/Invoke/beginInvoke/크로스스레딩] 비동기 처리 방법 /예제소스
상단으로

티스토리툴바