C# Task 异步的一些流程简单测试 Task 测试 异步测试

测试程序:

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 = 01次的 Result = 10002次的 Result = 20003次的 Result = 30004次的 Result = 4000
posted @   double64  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示