• C#基础之Async和Await 的异步编程


    官方文档地址:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/async/

    Coffee cup = PourCoffee();
    Console.WriteLine("coffee is ready");
    Task<Egg> eggTask = FryEggs(2);
    Task<Bacon> baconTask = FryBacon(3);
    Task<Toast> toastTask = ToastBread(2);
    Toast toast = await toastTask;
    ApplyButter(toast);
    ApplyJam(toast);
    Console.WriteLine("toast is ready");
    Juice oj = PourOJ();
    Console.WriteLine("oj is ready");
    
    Egg eggs = await eggTask;
    Console.WriteLine("eggs are ready");
    Bacon bacon = await baconTask;
    Console.WriteLine("bacon is ready");
    
    Console.WriteLine("Breakfast is ready!");
    static async Task Main(string[] args)
    {
        Coffee cup = PourCoffee();
        Console.WriteLine("coffee is ready");
        var eggsTask = FryEggsAsync(2);
        var baconTask = FryBaconAsync(3);
        var toastTask = MakeToastWithButterAndJamAsync(2);
    
        var eggs = await eggsTask;
        Console.WriteLine("eggs are ready");
        var bacon = await baconTask;
        Console.WriteLine("bacon is ready");
        var toast = await toastTask;
        Console.WriteLine("toast is ready");
        Juice oj = PourOJ();
        Console.WriteLine("oj is ready");
    
        Console.WriteLine("Breakfast is ready!");
    
        async Task<Toast> MakeToastWithButterAndJamAsync(int number)
        {
            var toast = await ToastBreadAsync(number);
            ApplyButter(toast);
            ApplyJam(toast);
            return toast;
        }
    }
    static async Task Main(string[] args)
    {
        Coffee cup = PourCoffee();
        Console.WriteLine("coffee is ready");
        var eggsTask = FryEggsAsync(2);
        var baconTask = FryBaconAsync(3);
        var toastTask = MakeToastWithButterAndJamAsync(2);
    
        var allTasks = new List<Task>{eggsTask, baconTask, toastTask};
        while (allTasks.Any())
        {
            Task finished = await Task.WhenAny(allTasks);
            if (finished == eggsTask)
            {
                Console.WriteLine("eggs are ready");
            }
            else if (finished == baconTask)
            {
                Console.WriteLine("bacon is ready");
            }
            else if (finished == toastTask)
            {
                Console.WriteLine("toast is ready");
            }
            allTasks.Remove(finished);
        }
        Juice oj = PourOJ();
        Console.WriteLine("oj is ready");
        Console.WriteLine("Breakfast is ready!");
    
        async Task<Toast> MakeToastWithButterAndJamAsync(int number)
        {
            var toast = await ToastBreadAsync(number);
            ApplyButter(toast);
            ApplyJam(toast);
            return toast;
        }
    }
  • 相关阅读:
    蓝桥杯真题(1)
    蓝桥杯------历届真题
    第三届蓝桥杯 c/c++真题
    数据库三大范式个人理解,书上讲的太抽象
    c#线程池ThreadPool实例详解
    c#多线程thread实例详解
    C#中异步使用及回调
    c# 多线程的几种方式
    C#中委托的同步和异步有什么区别
    C#设计模式——单例模式的实现
  • 原文地址:https://www.cnblogs.com/marshhu/p/11822275.html
Copyright © 2020-2023  润新知