いくつかのリモートソースからデータを取得する必要があるが、待機時間が長すぎない場合があります。 たとえば、天気や通貨のデータを読み込むときに、いくつかのサービスに問い合わせて、一定期間回答したすべての人の結果を表示できます。

この期間中に十分な数のサービスが応答しなかった場合は、ダウンロードを待つ時間を追加できます。
合計で、3つの基本的なパラメーターで動作します。
物事を簡単にするために、ローダークラスを作成します。 すべてが非常にシンプルで、最初にリストし、次に説明します:
AsyncDataLoaderpublic sealed class AsyncDataLoader<T> {
GetResultsAsyncの本文:
- 結果を保存するコレクションを作成します。 BlockingCollectionクラスは、異なるスレッドと対話するときに安全です。
- 各ハンドラーを個別のタスクに配置します。 すべてのタスクをリストにグループ化し、スケジューラに長時間実行について警告し(TaskCreationOptions.LongRunning)、優先度を追加するように依頼します(TaskCreationOptions.PreferFairness)。
- 実行時にすべてのタスクを開始し、時間制限を設定します。
- 必要に応じて、データをダウンロードするための追加の時間を与えます。
- SkipDefaultResults == trueフラグの場合、戻る前に空の結果をスキップします。
デバッグバージョンの場合、デバッグされた関数のコードをウォークスルーできるように、時間制限を強制的に無効にします。
参照: