1

私はこのようにループしている単純なコレクションを持っています:

foreach (MyObject mo in myObjects)
{
   myObject.RunAcync();
}

RunAsyncを使用して別のスレッドでコードを実行します。new Thread(()=>{ .. }).Start()のコードを変更することは私の力ではありませんRunAsync。同時に実行するインスタンスの数をNに制限する必要がありますmyObject(実数は2..10です)。.NET4とを使用してそれを行うための効率的な方法は何c#ですか?

4

1 に答える 1

0

私たちが現在持っているもの(.NET 4)と差し迫ったもの(今考えてみると、.NET 4.5)で変更できる場合RunAsyncは、タスク並列ライブラリ(TPL)を使用して、からある種のTaskオブジェクトを返しますRunAsync。次に、何が実行され、何が実行されているかを簡単に判断し、組み込みのTPL負荷分散を使用して実行中のタスクの数を制限できます。または、メソッドの非同期バージョンがある場合は、TPLのParallel.ForEachを使用してメソッドを呼び出すこともできます。これにより、負荷分散が処理され、パフォーマンスの問題を回避するために一度に十分な数のメソッドのみが実行されます。

于 2012-09-10T13:38:57.653 に答える