1

Async および Await キーワードの使用は、MS との最近の conf で推奨されています。コードが実行される新しいスレッドにまたがる Await キーワードを使用すると、Asp.net ワーカー スレッドはどうなりますか。リクエストが完了するのを待ちますか、それとも他のリクエストを処理し続けますか。

4

1 に答える 1

5

await新しいスレッドを生成しません。async/ awaitintroの投稿またはasync/ awaitFAQを参照してください。

ただし、必要に応じて明示的に を呼び出すことで、新しいタスクを生成できTask.Runます。

を呼び出したときにawait、待っているオブジェクトがまだ完了していない場合はawait、メソッドの残りの部分を後で実行するようにスケジュールしasync、現在のスレッドがスレッド プールに返されます。非同期操作の進行中asyncまたは進行中は、スレッドは使用されません。await非同期操作が完了すると、asyncメソッドの残りの部分がスレッド プール スレッドで実行されます (開始したスレッドと同じスレッドである場合と異なる場合があります)。async一般的なケース (1) では、メソッドは正しい要求コンテキストで再開されるため、これは通常は問題になりません。

(1) 一般的なケースは、 orを直接await待っている場合です。TaskTask<TResult>

于 2012-07-24T15:30:31.267 に答える