C# 的 async 和 await

C# 中可以利用 async 定義一個會進行非阻塞等待的函數,函數內部用 await Task.Run<TResult>(function) 來實現非阻塞等待,運行到 await 時,這個函數(所在的線程)會放棄控制權,然後當 function 返回後,再繼續執行。

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using System.Threading;

namespace ConsoleApp1
{
    class LearnAsync
    {
        public static async void AsynchronizedCalculation(double a, double b)
        {
            Thread.Sleep(1000);
            Console.WriteLine("Holy shit! ");
            // 到這裏是阻塞運行
            double result = await Task.Run<double>(() => { Thread.Sleep(1000); return 1; }); 
            // 通過 Task.Run<TResult> 定義一個需要異步完成的任務,await 表示非阻塞地等待這個 Task ,await 開始不再阻塞
            Console.WriteLine("result = " + result);
        }

        public static void Main()
        {
            AsynchronizedCalculation(100000000, 1.0001);
            Console.WriteLine("Main ended");
            Console.ReadKey();
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章