順序を保証する簡単な方法は、すべての TimeConsumingTasks を同じバックグラウンド スレッドで順番に実行することです。
これは、複数のスレッドで複数の TimeConsumingTasks を実行するよりも少し時間がかかる場合がありますが、結果を同期して必要な順序で出力を生成しようとする頭痛の種から解放されます。
ユーザーが別の作業を続けられるように UI を解放することが主な目的である場合、1 つのスレッドを使用した場合と複数のスレッドを使用した場合の完了時間の差は、おそらく無視できる程度です。 TimeConsumingTasks。
TimeConsumingTasks の計算をより迅速に完了することが主な目的である場合は、複数のコアを利用して一部の作業を並行して実行する可能性が高いため、複数のスレッドを実行することがおそらくより良いアプローチです。
複数のスレッドの場合に順序を維持するには、結果を自分で順序付けする必要があります。アキュムレータ一時リストを維持し、リスト内の結果の適切な場所に各結果を挿入するか (場所/インデックスが簡単に計算または既知である場合)、またはすべてのスレッドが合体を完了した後に追加の処理ステップを追加することができます。複数の結果が目的の順序で最終出力になります。並列および分散コンピューティング サークルでは、問題を複数のチャンクに分割して並列に完了し、結果を一貫した順序に結合するプロセスを「マップ リダクション」と呼びます。