C# 7.x 버전 이후로는 콘솔 앱 프로그램의 Main() 메서드에도 async 키워드를 붙일 수 있습니다. void 대신 async Task를 사용하여 Task 클래스를 반환하는 형태로 메서드를 만들고 다른 비동기 메서드도 호출할 수 있습니다.
닷넷에 이미 만들어 둔 HttpClient 클래스를 사용하면 특정 웹 사이트 또는 RESTFul 서비스인 Web API를 호출해서 그 결괏값을 가져올 수 있습니다. HttpClient 클래스의 GetAsync()와 ReadAsStringAsync()는 모두 비동기 메서드이기에 호출할 때 await를 앞에 붙이고 호출하면 됩니다. 참고로 닷넷의 모든 비동기 메서드는 Async 접미사를 붙입니다.
이처럼 비동기 메서드를 호출할 때는 async와 await 키워드를 쌍으로 붙여 호출해야 합니다.
비동기 메서드 호출을 이해할 때는 우선 현재 예제를 그대로 받아들여야 합니다. 비동기 메서드의 반환값은 Task, Task<T> 형태고, async와 await 키워드를 함께 사용해야 컴파일러 경고 없이 프로그램이 잘 실행할 수 있다는 점을 기억합니다.
DoAsync() 메서드에서 async와 await를 쌍으로 사용하는 비동기 호출을 하기에, 이것은 비동기 메서드로 봅니다. 비동기와 동기 호출을 모두 사용하는 메서드가 있다면 이것도 비동기 호출을 하는 비동기 메서드입니다.
참고로 콘솔 앱 프로그램은 UI를 다루지 않지만, Windows Forms와 WPF 같은 프로그램은 async와 await 키워드로 비동기 프로그램을 사용하면 UI 스레드를 차단하지 않아 내려받으면서 다른 동작(버튼 클릭 같은)을 수행할 수도 있습니다.