いくつかの大きな仕事をするいくつかのメソッドがあると仮定します。
最初は、メソッドがいくつあるかわかりません(1にすることも、10にすることもできます)。
コードでは、これは次のようになります。
public interface IWorker
{
void DoWork(DataContainer data);
}
そして、このインターフェースを実装するいくつかのクラス。次に、インスタンスのリストがあります。
List<IWorker> workers = new List<IWorker>();
これらのメソッドを非同期で実行したいと思います。さらに、それらすべてが実行されたときにコールバックが必要です。
public void Callback()
{
Console.WriteLine("everything done");
}
カスタムラッパーなどを作成せずにこれを行う方法はありますか?ThreadPool、Tasks、Parallelを使用しますか?
私が知っているように、Parrallelはタスクが完了するまでスレッドをブロックするので、これは好ましい動作ではありません。
タスクを作成するとき、私が見たようにパラメータのないメソッドがあるはずなので、これも良くありません。
ThreadPoolでは、メソッドQueueUserWorkItemを使用する可能性がありますが、このメソッドを使用すると、単一の「合計完了」コールバックを取得できません。
もちろん、ThreadPoolを使用して目的の機能を実装する独自のラッパーを作成することもできますが、目標は、そのような機能を記述せずにこれを作成することです。
誰か助けてもらえますか?ありがとう。