4

次のような構文を使用して関数を呼び出す人はほとんどいません。

Parallel.Invoke(() => Method1(yourString1),() => Method2(youString2));

また、次のようなコードを書く人はほとんどいません。

Task myFirstTask = Task.Factory.StartNew(() => Method1(5));
Task mySecondTask = Task.Factory.StartNew(() => Method2("Hello"));

したがって、私の質問は、いつParallel.Invoke()を使用する必要があるか、いつ Task クラスのインスタンスを作成してStartNew()メソッドを呼び出す必要があるかです。

Parallel.Invoke()は非常に便利に見えます。それで、Task クラスとStartNew()メソッドを使用することの重要性は何ですか....光を当てて、同じ種類のジョブに対する異なるアプローチの重要性を教えてください。呼び出しを意味しますtwo 関数は、2 つの異なる構文で並列に機能します。

Task Parallel ライブラリの前に使用したことはありません。そのため、関数の呼び出しに 2 つのアプローチを使用する理由が隠れている可能性があります。詳しく教えてください。ありがとう

4

1 に答える 1

6

さて、Parallel.Invoke両方の新しいタスクが完了するまでブロックします。

2 番目のアプローチは、2 つの新しいタスクを開始しますが、それらが完了するのを待ちません。手動で待機することもできますが、C# 5 では、新しい async/await 機能が非同期で "待機" するのに役立ちます。

それは本当にあなたが何をしたいかによって異なります。すべてのタスクが完了するまでスレッドをブロックしたい場合は、Parallel.Invokeが便利です。

于 2012-08-13T09:07:45.757 に答える