【问题标题】:C#- How to parallel for each for list of methods?C#-如何为每个方法列表并行?
【发布时间】:2016-09-17 09:58:26
【问题描述】:

我有方法列表,需要将它们并行化。 如何在 C# 中做到这一点?我看到有一个Parallel命名空间?如何使用?

method1()
method2()
method3()
method4()

【问题讨论】:

    标签: c# multithreading parallel-processing task parallel.foreach


    【解决方案1】:

    Parallel.Invoke方法:

    Parallel.Invoke(
        () => method1(),
        () => method2(),
        () => method3(),
        () => method4()
    )
    

    添加命名空间System.Threading.Tasks

    【讨论】:

    • 调用它们时仍然卡住?不知道为什么?
    • @Hanaa Parallel.Invoke 将等待所有方法完成。如果您需要运行它们并继续使用Task.Run(() => method1())
    • 拜托,你能检查一下吗? stackoverflow.com/questions/39555945/…
    【解决方案2】:

    您可以创建Action 委托列表,其中每个委托都是对给定方法的调用:

    List<Action> actions = new List<Action>
    {
         method1,
         method2,
         method3
    };
    

    然后使用Parallel.ForEach并行调用它们:

    Parallel.ForEach(actions, action => action());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      • 2011-06-10
      • 1970-01-01
      • 2011-04-03
      • 1970-01-01
      相关资源
      最近更新 更多