非同期プログラミングを使用する場合、コードの非同期実行と待機可能なメソッドの作成の違いを理解することが重要です。
Task.Run および非同期実行:
Task.Run はバックグラウンド スレッドでコードを実行し、非同期のように見えます。ただし、このアプローチでは真の非同期メソッドは作成されません。呼び出し元のスレッドは、タスクが完了するまでブロックされたままになります。
例:
private async Task DoWork2Async() { Task.Run(() => { int result = 1 + 2; }); }
この例では、呼び出し元のスレッドはブロックされたままであるため、DoWork2Async は真の非同期ではありません。タスクはバックグラウンド スレッドで実行されます。
ネイティブ非同期メソッド:
ネイティブの非同期メソッドは、async キーワードを使用して宣言され、実行が開始される前に呼び出し元に制御を渡すことができます。呼び出し元は、非同期操作が完了するまで待機している間、他のコードの実行を続けることができます。
例:
private async Task DoWork1Async() { int result = 1 + 2; }
この例では、DoWork1Async はネイティブの非同期メソッドです。 。それを待つと、呼び出しスレッドが解放され、非同期操作が完了するまで他のコードを実行できるようになります。
結論:
awaitable 非同期メソッドでは、Task.Run で同期コードをラップせずに async キーワードを使用する必要があります。これにより、非同期操作の実行中に呼び出しスレッドがブロックされない、真の非同期実行が可能になります。
以上が非同期メソッド: Task.Run とネイティブ非同期 - いつどちらを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。