C#多线程开发之----List Task有返回值

C#中的List是一个泛型集合类,可以用来存储任意类型的元素。在多线程环境下,可以使用Task类来执行异步操作并返回结果。通过将List与Task结合使用,可以实现多线程处理带有返回值的操作,从而提高程序的效率和性能。

以下是使用List和Task实现多线程处理带有返回值的操作的优点:

  1. 提高程序的性能:在多线程环境下,程序的执行速度会得到显著提升。这是因为多线程可以将一个任务分成多个子任务,并分别在不同的线程上执行,从而充分利用计算机的多个CPU核心。
  2. 更好的响应性能:在处理大量数据时,如果使用单线程,程序会一直等待任务完成而无法响应其他操作。而使用多线程,可以将任务分解成多个子任务,并在不同的线程上执行。这样可以使程序在等待某个子任务完成时,同时处理其他子任务,从而提高程序的响应性能。
  3. 更好的可扩展性:随着计算机硬件的发展,计算机的CPU核心数越来越多。使用多线程可以充分利用计算机的多个CPU核心,从而提高程序的扩展性。这样可以使程序在未来的硬件平台上更好地运行。
  4. 更好的并发性:在多线程环境下,可以同时执行多个操作。这样可以使程序在处理多个任务时更加高效和流畅。
  5. 更好的可维护性:使用多线程可以将复杂的任务分解成多个简单的子任务,每个子任务都可以单独测试和维护。这样可以提高代码的可维护性和可测试性。

使用List和Task实现多线程处理带有返回值的操作可以提高程序的性能、响应性能、可扩展性、并发性和可维护性。

private  async void button24_Click(object sender, EventArgs e)
        {
            // 写法一:创建多个任务
            var tasks = new List>
            {
                Task.Factory.StartNew(() => DoWork(1)),
                Task.Factory.StartNew(() => DoWork(2)),
                Task.Factory.StartNew(() => DoWork(3))
            };

            var results = await Task.WhenAll(tasks);
            // 输出结果
            Console.WriteLine("任务结果: " + string.Join(", ", results));


            //写法二:
            List> taskList = new List>();
            taskList.Add(
                Task.Run(()=> {
                    return DoWork(1);
                })
                );
            taskList.Add(
                Task.Run(() => {
                    return DoWork(2);
                })
                );
            taskList.Add(
                Task.Run(() => {
                    return DoWork(3);
                })
                );
            taskList.Add(
                Task.Run(() => {
                    return DoWork(4);
                })
                );
            // 等待所有任务完成并获取结果
            var results2 = await Task.WhenAll(taskList);
            Console.WriteLine("任务结果2: " + string.Join(", ", results2));

            Console.WriteLine("任务结果: " + DateTime.Now.Hour); 
        }

C#多线程开发之----List Task有返回值_第1张图片

你可能感兴趣的:(C#,java,服务器,前端)