c# - 如何同步.NET中的并行 Action ?

标签 c# .net multithreading task-parallel-library

我想完成以下工作:

void Method()
{
    Parallel.For(0, 100, i =>
    {
        // Do first set of actions

        // Wait for all tasks to finish performing first set of actions

        // Do second set of actions
    });
}

我不能简单地做
void Method()
{
    Parallel.For(0, 100, i =>
    {
        // Do first set of actions
    });

    Parallel.For(0, 100, i =>
    {
        // Do second set of actions
    });
}

因为每个任务都会在第一组操作中实例化一个新对象,而第二组操作必须能够引用该实例。

我该怎么做?

最佳答案

我建议您按照第二个代码段的方式进行操作,但是要为这些新创建的对象保留一个数组-在循环中填充它们,然后在第二个中访问它们。

void Method()
{
    var intermediates = new Intermediate[100];
    Parallel.For(0, 100, i =>
    {
        // ...
        intermediates[i] = ...;
    });

    Parallel.For(0, 100, i =>
    {
        var intermediate = intermediates[i];
        // ... use intermediate
    });
}

关于c# - 如何同步.NET中的并行 Action ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19552448/

相关文章:

c# - 列中带有按钮的 .net Radgrid 仅在第二次单击时触发 itemcommand

c# - System.Printing 未找到(C#)?

c# - 如何在 ASP.NET MVC 中创建 Webhook?

.net - 如何以编程方式将文件识别为 .NET 程序集?

c# - 如何使静态方法线程安全?

Java CPU 使用率应该是 100%...但它不是

java - 单例类方法的并发调用

c# - ServiceStack 命名空间更改不起作用

c# - Ninject 依赖解析器

.net - LINQ中的动态where子句-在运行时具有列名