async/await を理解しようとすると、ジレンマが生じます: メソッドを内部にカプセル化する必要があるかどうかTask.Run を使用して、非同期動作とバックグラウンド スレッド実行の両方を実現しますか?
「非同期」は、実行を開始する前に呼び出しスレッドに制御を渡すことができるメソッドを示します。この譲歩は await 式を通じて発生します。対照的に、MSDN で定義されている「非同期」 (誤解を招きやすい用語) は、別のスレッドで実行されるコードを指します。
これとは別に、「awaitable」は、await 演算子で使用できる型を表します。一般的な待機可能オブジェクトには、Task と Task
待機可能性を維持しながらバックグラウンド スレッドでメソッドを実行するには、Task.Run:
private Task<int> DoWorkAsync() { return Task.Run(() => 1 + 2); }
private async Task<int> GetWebPageHtmlSizeAsync() { var html = await client.GetAsync("http://www.example.com/"); return html.Length; }
以上が非同期/待機: バックグラウンド スレッドのためにメソッドを「Task.Run」でラップする必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。