返回顶部

Task 带参数和返回值的多线程调用

static void Main(string[] args)
        {

            // 无参数异步
            var tasks = new List<Task>();
            for (int i = 0; i < 5000; i++)
            {
                tasks.Add(Task.Run(() => { Console.WriteLine(i); }));
            }
            Task.WaitAll(tasks.ToArray());

            // 带参数异步
            var taskList = new List<Task<List<int>>>();
            for (int i = 0; i < 5000; i++)
            {
                taskList.Add(Task.Factory.StartNew(state => { 
                    var value= state as int?;
                    return new List<int> { value ?? 0 };
                },i));
            }
            Task.WaitAll(taskList.ToArray());

            List<int> list = new List<int>();
            foreach (var item in taskList)
            {
                list.AddRange(item.GetAwaiter().GetResult());
            }
            Console.ReadKey();
        }

  

posted @ 2023-01-09 14:37  SportSky  阅读(255)  评论(0编辑  收藏  举报
作者:SportSky 出处: http://www.cnblogs.com/sportsky/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如果觉得还有帮助的话,可以点一下右下角的【推荐】,希望能够持续的为大家带来好的技术文章!想跟我一起进步么?那就【关注】我吧。