2017-01-12 5 views
1

私が知っている限り、非同期メソッド呼び出しは新しいスレッドでメソッドを開始し、直ちに呼び出しを開始するスレッドに制御を戻します。したがって、WinFormアプリケーションでは、イベントハンドラ内に非同期メソッドを呼び出すと、そのメソッドは新しいスレッドによって実行され、コントロールは呼び出しを開始するスレッドに戻ります。この場合はUIです糸。その時点で、UIスレッドは、非同期呼び出しが完了するまで他のユーザーの要求に応答できるようになり、UIスレッドはイベントハンドラ内のコードの実行を再開できます。asp.net web apiコントローラに非同期メソッドを持つ利点はありますか?

私の質問は、私たちが持っているWinFormsアプリケーションとasp.net web apiコントローラ(またはWebアプリケーションとWeb APIの両方に対応するasp.netコアコントローラ)ではなく、同じシナリオで何が起こるかです。WinFormsではUIスレッドは、他のユーザーとの対話に応答できるようにするために、非同期メソッドを呼び出した後に制御を再獲得するものです。 asp.net web api(またはasp.netコア)の同等のスレッドは何ですか?それに対応できる他の形式の相互作用がありますか?

ちなみに、コントローラで非同期メソッドを使用するのが良いか悪いのかは問いません。いくつかのライブラリは非同期メソッドしか提供しないので不可避です。私はもしあなたが何か利益があるかどうか尋ねているだけです?

おかげ

+3

http://blog.stephencleary.com/2013/11/there-is-no-thread.html – Alexan

答えて

5

それはIISに来る、.NET Frameworkは、要求を処理するスレッドがビジー状態である、ASP.NET要求にサービスを提供するために使用されているスレッドのプールを維持しますが、要求は同期的に処理されている場合しばらく要求が処理されていて、そのスレッドはスレッドプールに無制限の数のスレッドがあってもスレッドプールには問題がない別の要求を処理できません。結果的に、I/O集約型や他の非CPUバインド型のリクエストを実行する必要がある場合、非同期操作を利用することで利点が得られ、4より前のMVCバージョンを使用している場合はAsyncController Classを使用できます。 MVC4以降を使用しています...

非同期メソッドを使用する利点の良い例の1つは、Webサイトがユーザーから提出されたファイルを処理している場合です。ファイルの種類、処理の種類、ファイルのサイズによっては、リソースを大量に消費するため、非同期メソッドを使用してファイル操作を実行すると、そのシナリオで明確な利点が得られます。

とこのSO質問:

は、これらの記事をチェック

関連する問題