非同期と待機の謎解き: Task.Run の難題を回避する
非同期と待機を理解するのは最初は難しいかもしれませんが、概念を理解するのは簡単ですプロセスを簡素化できます。
非同期vs. バックグラウンド スレッドの実行
非同期とは、本質的には「バックグラウンド スレッド」を意味するものではありません。これは、続行する前に呼び出しスレッドに制御を「譲る」ことを可能にするメソッドを指します。これらの降伏ポイントは await 式でマークされます。
Awaitable と Async
Awaitable 型は (await 式のように) 待機できますが、async メソッドでは非同期が可能です。実行。すべての非同期メソッドが待機可能な型を返すわけではありません。また、その逆も同様です。
Task.Run for Background Execution
バックグラウンド スレッドで操作を実行する場合は、待機可能な場合は、Task.Run:
private Task<int> DoWorkAsync() { return Task.Run(() => 1 + 2); }
Async メソッドを使用します。譲歩
メソッド シグネチャで await と async を使用して呼び出し元に譲歩する非同期メソッドを作成します:
private async Task<int> GetWebPageHtmlSizeAsync() { var client = new HttpClient(); var html = await client.GetAsync("http://www.example.com/"); return html.Length; }
同期メソッドでの Task.Run の回避
同期メソッドをラップすることはお勧めしませんタスクを実行します。バックグラウンド スレッドで実行する必要がある場合は、別のタスクを作成してください。
さらなる探索のためのリソース
以上がAsync および Await で「Task.Run」を使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。