C# async await 笔记

using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using abc = Iner;
 
namespace Test
{
    class Program
    {
        static void Main()
        {
            for (int i=0; i<10; i++)
            {
                abc.A.a = i;
                Display(i);
            }
            Console.WriteLine("Main runing");
            Dalay();
            Console.WriteLine("await 不会阻塞调用者!");
            Thread.Sleep(1000);
            Console.WriteLine("Main runing ok!");
             
        }
         
         
        static async void Display(int n)
        {
            List<string> col = new List<string>();
            abc.A.b((int x, List<string> y) => {Console.WriteLine("Iner Action {0}", x); y.Add(n.ToString());});
            await Add(n.ToString(), col);
        }
         
        static async Task Add(string name, List<string> Col)
        {
           await Task.Delay(1);
           Col.Add(name);
           Console.WriteLine("**********************");
        }
         
        static async Task GetInerC()
        {
            foreach (string n in abc.A.c)
            {
                Console.WriteLine("Iner A c {0}", n);
                await Task.Delay(80);
            }
        }
         
        static async void Dalay()
        {
            await GetInerC();
        }
    }
}
 
namespace Iner
{
    public delegate void Ac<t>(t a);
    class A
    {
        public static int a = 11;
        public static List<string> c = new List<string>();
        public static Ac<Action<int, List<string>>> b = (Action<int, List<string>> a)=>{Console.Write("Iner : ") ;a(A.a, A.c);};
    }    
}
原文地址:https://www.cnblogs.com/DoNetCShap/p/14771929.html