상세 컨텐츠

본문 제목

C# async 와 await 정리

IT 정보

by 내행복 2023. 11. 17. 17:04

본문

알쓸신잡 - https://koreatmi.tistory.com/

 

 

인터넷에 관련된 내용은 많지만,

내가 이해하기에 어렵고, 명확하지 않은 설명들이 대부분이라

내가 직접 정리했다.

 


async 키워드는 해당 메소드를 비동기 작업으로 하겠다.

는 것을 명시하기 위함이다.

async 메소드를 사용한다면,

반드시 Task, Task<T>, void 를 반환해야 한다.

void는 특별한 경우에만 사용한다.

웬만하면 Task 또는 Task<bool> 반환하자.

 


await 는 async 메소드 내에서 사용한다.

await는 <다 때려치우고, a wait>

"너 여기서 기다려" 라고 이해하면 된다.

async 메소드 비동기 작업이 진행되고

해당 비동기 작업이 완료될 때까지

<기다리는데 사용하면 된다>

 

 

아래 예시 참고

(앞에서 async 비동기 작업 실행)
A
B
await C
D
E
 

이렇게 코드가 순서로 되어있다면,

비동기 작업이 진행되고 Main에서는 A,B 코드까지 진행.

그리고 C에서 대기한다.

 

보통, 비동기는 Main이 흘러가서 D,E가 작동되야 생각하지만,

C에서 await를 붙였기 때문에 해당 순서에서 기다린다.

 

즉, 1개의 메소드에 다 때려넣어서 순서를 뒤죽박죽 만들지 말고

적절하게 객체, 메소드를 분리해서 순서를 올바르게 할당하자.

 

한줄로 요약하면,

이 키워드를 사용하면 비동기 작업이 완료될 때까지

현재 메서드의 실행을 일시 중지하고,

완료되면 다시 실행을 계속합니다.

(메인 스레드에서 진행했다가는..프로그램 멈춥니다)

public async Task<int> GetNumberAsync()
{
    await Task.Delay(1000); // 1초 대기
    return 42;
}
(추가 예시코드)

 

 

관련글 더보기