56.5 Task.Run( ) 메서드로 비동기 메서드 호출하기
동기 메서드 내에서 비동기 메서드를 호출할 때는 Task.Run() 메서드를 사용할 수 있습니다. Task.Run() 메서드는 CPU 바인딩된(즉, CPU가 오래 처리해야 하는) 코드를 묶어 비동기 처리를 합니다. 다음 내용을 입력한 후 실행해 보세요.
Task.Run( ) 메서드로 비동기 메서드 호출: AsyncAwaitDescription.cs
using System; using System.Threading; using System.Threading.Tasks; class AsyncAwaitDescription { static void Main() { Task.Run(() => DoPrint()); //1, 2, 3, ... Console.WriteLine("[?] async await 사용 예제"); Thread.Sleep(1); } static async void DoPrint() { await PrintNumberAsync(); } static async Task PrintNumberAsync() { await Task.Run(() => { for (int i = 0; i < 300; i++) { Console.WriteLine(i + 1); } }); } }
실행 결과
[?] async await 사용 예제 1 2 ...(생략)
이 코드는 Main()에서 Task.Run() 메서드로 비동기 메서드인 DoPrint()를 사용하는 내용을 보여 줍니다. 마찬가지로 Task.Run() 메서드 앞에 await 키워드를 붙여 비동기 메서드로 만드는 내용을 PrintNumberAsync() 메서드에 표현해 보았습니다.