간단하게 대답하기 어려운 부분도 있네요. 먼저, async/await 에 대해 심도있게 개념을 파악해 보시는것을 먼저 추천을 드립니다.
질문에 대한 간략한 답은,
await
는 비동기 대기,
Task의 Result
는 동기 대기를 하게 됩니다.
비동기 메소드는 결과 값을 얻기까지의 소요시간이 예상할수 없거나
, 오래 걸리는
작업에 사용하면 유용하다고 보시면 됩니다. 그러므로 Result
보다는 await
로 정확히 비동기 대기로 기다리시는것을 권합니다.
동작도 상이합니다. await의 경우 결과 값을 받기 까지 대기하는것은 Result
와 동일하지만, 스레드 상태가 달라집니다. await로 인해 값을 받기까지의 대기는, 진입 스레드
에 있지 않습니다. 이 동작을 확실하게 눈으로 확인하시려면 Windows Forms이나 WPF 등 UI에서 비동기 메소드를 호출해 보시면 됩니다.
Result
의 경우 호출 스레드
가 값이 반환될 때까지 대기
하는데 반해, await로 비동기 대기하는 경우, 호출 스레드는 자신의 스레드 흐름으로 넘어가 화면이 계속적으로 반응합니다.