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);}; } }