Await 와 result의 차이 질문

간단하게 대답하기 어려운 부분도 있네요. 먼저, async/await 에 대해 심도있게 개념을 파악해 보시는것을 먼저 추천을 드립니다.

질문에 대한 간략한 답은,

await는 비동기 대기,

Task의 Result는 동기 대기를 하게 됩니다.

비동기 메소드는 결과 값을 얻기까지의 소요시간이 예상할수 없거나, 오래 걸리는 작업에 사용하면 유용하다고 보시면 됩니다. 그러므로 Result보다는 await로 정확히 비동기 대기로 기다리시는것을 권합니다.

동작도 상이합니다. await의 경우 결과 값을 받기 까지 대기하는것은 Result와 동일하지만, 스레드 상태가 달라집니다. await로 인해 값을 받기까지의 대기는, 진입 스레드에 있지 않습니다. 이 동작을 확실하게 눈으로 확인하시려면 Windows Forms이나 WPF 등 UI에서 비동기 메소드를 호출해 보시면 됩니다.

Result의 경우 호출 스레드가 값이 반환될 때까지 대기하는데 반해, await로 비동기 대기하는 경우, 호출 스레드는 자신의 스레드 흐름으로 넘어가 화면이 계속적으로 반응합니다.

4개의 좋아요