测试程序:
public class TAKS_TEST
{
private readonly Dictionary<int, Task<T_TEST>> DataDic = new Dictionary<int, Task<T_TEST>>();
private T_TEST GetRes(int i)
{
Thread.Sleep(i * 1000);
return new T_TEST() { INT = i * 1000 };
}
private async Task<T_TEST> GetResAsync(int i)
{
return await Task.Run(() => GetRes(i));
}
public void GO()
{
for (int i = 0; i < 5; ++i)
{
Task<T_TEST> t_TEST = GetResAsync(i);
DataDic.Add(i, t_TEST);
t_TEST.ContinueWith(t =>
{
int idx = DataDic.First(pair => pair.Value == t).Key;
Console.WriteLine($"第{idx}次延时{t.Result.INT}毫秒");
});
}
}
public void Wait()
{
List<Task<T_TEST>> tList = new List<Task<T_TEST>>();
foreach (Task<T_TEST> t_TEST in DataDic.Values)
{
tList.Add(t_TEST);
}
Task.WaitAll(tList.ToArray());
Console.WriteLine("已全部完成,全部结果遍历:");
for (int i = 0; i < tList.Count; ++i)
{
Console.WriteLine($"第{i}次的 Result = {tList[i].Result.INT}");
}
}
}
public class T_TEST
{
public int INT { get; set; }
}
主函数:
TAKS_TEST tAKS_TEST = new TAKS_TEST();
tAKS_TEST.GO();
Console.WriteLine("等待完成,统一打印结果:");
tAKS_TEST.Wait();
Console.ReadKey();
输出:
等待完成,统一打印结果:
第0次延时0毫秒
第1次延时1000毫秒
第2次延时2000毫秒
第3次延时3000毫秒
第4次延时4000毫秒
已全部完成,全部结果遍历:
第0次的 Result = 0
第1次的 Result = 1000
第2次的 Result = 2000
第3次的 Result = 3000
第4次的 Result = 4000
标签:异步,Task,延时,int,毫秒,Result,测试,TEST
From: https://www.cnblogs.com/huvjie/p/17972147