私は Objective-C のバックグラウンドを持っており、Grand Central Dispatch または NSOperations を使用してこの問題をかなり簡単に解決していました。残念ながら、C# でこの問題を構造化しようとすると、その考え方にとらわれていると思います。
高レベルのタスクがあり、それぞれに並行して発生する可能性のある複数の部分があります。これらの各部分は、パイプラインでいくつかの段階を経る必要があります。このパイプラインを構築する必要がありますが、高レベルのタスクがいつ完了するかを把握し、コールバックを実行します。
GCD では、パーツを実行するためのキューを作成し、それぞれがプロセスの次のパーツに連鎖します。これらのパーツはすべて、それらが含まれていた高レベルのタスクに基づいてグループ化されるため、最後にコールバックをトリガーできます。
これがC#でどのように機能するかを理解するのに苦労しています。私は主に Task Parallel Library を研究してきましたが、使用するものに特に好みはありません。これまでに遭遇した問題の 1 つは、TPL パイプラインで処理を終了した場合にのみ完了コールバックが可能であるように見えることですが、発生しないタスクが複数あるためです。
概要レベルで、この問題をどのように構成するのが最適でしょうか? 同時実行性を提供する Rx を使用してシステムを作成する方がよいのではないでしょうか?