Task.WhenAll 示例
public async Task<bool> GetVAsyncs() { var ms = new List<int>() { 2000, 3000, 1000, 2000, 3000, }; var tasks = new List<Task<bool>>() { }; ms.ForEach(x => tasks.Add(GetVAsync(x))); bool[] ret = await Task.WhenAll(tasks.ToArray()); return ret.All(x => x == true); } /// <summary> /// 正确示范 不确定就用Task.Run包起来,总没错。 /// </summary> /// <param name="delayMs"></param> /// <returns></returns> public async Task<bool> GetVAsync(int delayMs) { bool ret = await Task.Run(() => Task.Run(() => Task.Run(() => Task.Run(() => { Thread.Sleep(delayMs); return true; }) ) ) ); return ret; } /// <summary> /// 错误示范,线程永远不会执行。 /// </summary> /// <param name="delayMs"></param> /// <returns></returns> public async Task<bool> GetVAsync2(int delayMs) { await new Task<bool>(() => { Thread.Sleep(delayMs); return true; }); return true; }