1

私は次のことを達成したいと思います:

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
    });
}

これは、各タスクが最初のアクション セットで新しいオブジェクトをインスタンス化し、2 番目のアクション セットがそのインスタンスを参照できる必要があるためです。

どうすればこれを達成できますか?

4

1 に答える 1

3

2番目のコードスニペットとまったく同じようにすることをお勧めしますが、これらの新しく作成されたオブジェクトの配列を保持します-ループにそれらを入力し、2番目にそれらにアクセスします.

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
    });
}
于 2013-10-23T21:19:51.657 に答える