学习任重道远啊 2022-02-18 20:11 采纳率: 68.2%
浏览 25
已结题

想问一下大shen们,这种情况该这么处理?

img


就是我想在主函数的for循环中计算在20s的时间里,算出40个结果,也就是2个结果同时打印,有啥方法是可以这个样子?

  • 写回答

2条回答 默认 最新

  • 码老头 2022-02-19 13:55
    关注

    在C#编程中,可以使用多种方式实现多线程,这里使用了Parallel.For(),先看运行效果:

    img

    为了演示,示例中将Sleep时间设置成了200毫秒。

    示例代码:

    using System;
    using System.Linq;
    using System.Threading;
    using System.Threading.Tasks;
    
    namespace ConsoleApp2
    {
        internal class Program
        {
            private static int[] _a;
            private static int[] _b;
            static void Main(string[] args)
            {
                Console.WriteLine("按任意键开始...");
                Console.ReadKey();
                _a = Enumerable.Range(1, 22).ToArray();
                _b = Enumerable.Range(21, 22).ToArray();
                Parallel.For(0, 2, new ParallelOptions { MaxDegreeOfParallelism = 2 }, (index) =>
                    {
                        Console.WriteLine($"线程索引:{index}");
                        for (var i = 0; i < 20; i++)
                        {
                            var data = Add(i);
                            Console.WriteLine($"第{i + 1}次结果:{data}");
                        }
                    });
                Console.WriteLine("任务已完成");
    
                Console.ReadKey();
            }
    
            private static int Add(int i)
            {
                Thread.Sleep(200);
                var c = _a[i] + _b[i];
                return c;
            }
        }
    }
    

    除此之外,还可以使用Task.Factory.StartNew()来实现等待所有线程任务都完成的效果,详细示例请参考:

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月27日
  • 已采纳回答 2月19日
  • 创建了问题 2月18日

悬赏问题

  • ¥15 SQL Server下载
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥15 python爬取bilibili校园招聘网站
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件
  • ¥15 不同系统编译兼容问题
  • ¥100 三相直流充电模块对数字电源芯片在物理上它必须具备哪些功能和性能?
  • ¥30 数字电源对DSP芯片的具体要求