非同期タスクの管理:タイムアウトの実装
効率的な非同期プログラミングには、タスクの完了を管理する必要があります。 ただし、この待機プロセスに時間制限を課す必要がある場合があります。この記事では、タイムアウトの制約を尊重しながら、非同期的にTask<T>
解決策:とTask.WhenAny()
Task.Delay()
を組み合わせます
このソリューションのコアは、
の使用にあります。 Task.WhenAny()
2つのタスクの最初のタスクが終了するのを待ちます。 これを活用して、タイムアウト期間を表すTask.Delay()
を作成します。
Task.WhenAny(task1, task2)
Task.Delay()
ターゲットタスクとタイムアウトタスクの両方を同時に監視します。 ターゲットタスクがタイムアウトの前に完了した場合、
タスクを返し、タイムアウトを示します
Task.WhenAny()
Task.WhenAny()
ソリューションの拡張:キャンセルの組み込みTask.Delay()
強化された制御については、キャンセルサポートの追加を検討してください。 キャンセルトークンをターゲットタスクとの両方に渡します。これにより、いずれかのソースからの即時キャンセルが可能になります。 キャンセルとタスクの完了の慎重な取り扱いは、人種の状況を防ぐために重要です。
以上がタイムアウトのタスクを非同期的に待つにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。