static void Main(string[] args) { Test(); Console.ReadKey(); } static async void Test() { Task returnedTaskTResult = GetTaskOfTResultAsync(); SynchronousTask(); int intResult = await returnedTaskTResult; //int intResult = await GetTaskOfTResultAsync(); Console.WriteLine("GetTaskOfTResultAsync result " + intResult); } static async Task GetTaskOfTResultAsync() { int hours = 0; Console.WriteLine("GetTaskOfTResultAsync start thread id "+Thread.CurrentThread.ManagedThreadId); await Task.Delay(10000); Console.WriteLine("GetTaskOfTResultAsync end thread id " + Thread.CurrentThread.ManagedThreadId); return hours; } static void SynchronousTask() { Console.WriteLine("SynchronousTask start thread id " + Thread.CurrentThread.ManagedThreadId); Thread.Sleep(2000); Console.WriteLine("SynchronousTask end thread id " + Thread.CurrentThread.ManagedThreadId); }