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

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

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

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

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

private  async void button24_Click(object sender, EventArgs e)
        {
            // 写法一:创建多个任务
            var tasks = new List<Task<string>>
            {
                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<Task<string>> taskList = new List<Task<string>>();
            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); 
        }

相关推荐

  1. C++线(multi-thread)

    2023-12-08 21:56:02       71 阅读
  2. C++ 线

    2023-12-08 21:56:02       40 阅读
  3. C++ 线

    2023-12-08 21:56:02       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-08 21:56:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-08 21:56:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-08 21:56:02       82 阅读
  4. Python语言-面向对象

    2023-12-08 21:56:02       91 阅读

热门阅读

  1. 不同进程共享变量

    2023-12-08 21:56:02       56 阅读
  2. IntelliJ IDEA安装使用教程#intellij idea

    2023-12-08 21:56:02       62 阅读
  3. GO设计模式——12、外观模式(结构型)

    2023-12-08 21:56:02       65 阅读
  4. 移动产品经理常用的ChatGPT通用提示词模板

    2023-12-08 21:56:02       66 阅读
  5. MySQL 字符串函数

    2023-12-08 21:56:02       37 阅读
  6. Linux设备树

    2023-12-08 21:56:02       48 阅读