namespace MyConsoleApp.Work { public class AsyncAwaitWork { private static Task Test() { System.Console.WriteLine("Start Test"); Task t = Task.Delay(3000); return t; } private static async void TestAsync() { System.Console.WriteLine("Start Test"); Task t = Task.Delay(3000); await t; // 함수 내부에서는 동기, 함수 호출부에서는 비동기로 처리됨 System.Console.WriteLine("End TestAsync"); } private static async Task TestAsync2() { System.Console.WriteLine("Start Test"); Task t = Task.Delay(3000); await t; System.Console.WriteLine("End TestAsync"); return 1; } public async static void DoTest() { // Task t = Test(); // t.Wait(); //TestAsync(); await TestAsync2(); // 메인 함수도 동기로 처리됨 int res = await TestAsync2(); System.Console.WriteLine("While start"); while (true) { } } } }