나의 지식 보관소
async한정자와 await 연산자로 만드는 비동기 코드 본문
async 한정자는 메서드, 이벤트 처리기, 태스크, 람다식 등을 수식함으로써 C# 컴파일러가 이들을 호출하는 코드를 만날 대 호출 결과를 기다리지 않고 바로 다음 코드로 이동하도록 실행 코드를 생성하게 한다. 단 async로 한정하는 메서드는 반환 형식이 Task나 Task<TResult>또는 void이여야만 한다.
void 메서드는 async 수식 하나만으로 완전한 비동기 코드가 된다. 하지만 Task나 Task<TResult>형식의 메서드는 async로 한정한것만으로는 동기코드와 다름 없이 동작한다. C#컴파일러는 Task나 Task<TResult>형식의 메서드를 async로 한정한 경우 await연산자가 해당 메서드 내부의 어디에 위치하는지 찾아서, 그곳에서 호출자에게 제어를 돌려주도록 한다.
또한 await 키워드는 awaitable 클래스 객체가 완료되는것을 기다리는 역할도한다.
'프로그래밍 언어 > C#' 카테고리의 다른 글
ADO.NET (0) | 2020.05.15 |
---|---|
Task와 Task<TResult>그리고 Parallel (0) | 2020.05.06 |
익명 메서드와 람다식 (0) | 2020.05.06 |
이벤트 event (0) | 2020.05.05 |
대리자 (0) | 2020.05.05 |