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

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章