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();
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章