ホームページ > バックエンド開発 > C++ > Async および Await で「Task.Run」を使用する必要があるのはどのような場合ですか?

Async および Await で「Task.Run」を使用する必要があるのはどのような場合ですか?

Barbara Streisand
リリース: 2025-01-04 12:01:35
オリジナル
415 人が閲覧しました

When Should I Use `Task.Run` with Async and Await?

非同期と待機の謎解き: 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 の回避

同期メソッドをラップすることはお勧めしませんタスクを実行します。バックグラウンド スレッドで実行する必要がある場合は、別のタスクを作成してください。

さらなる探索のためのリソース

  • [非同期/M. Thaddeus Payne の紹介を待つ]ブログ](https://blog.m-thaddeus.com/async- and-await-simplified-an-概要/)
  • [非同期プログラミングに関する MSDN ドキュメント](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/)

以上がAsync および Await で「Task.Run」を使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート