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();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值