2
このコードがネット上に見つかりました。awaitとasyncをすぐに使用する理由はありますか?
If request.Content IsNot Nothing Then
' Hash content to ensure message integrity
Using md5__1 = MD5.Create()
requestContentBase64String = Convert.ToBase64String(md5__1.ComputeHash(Await request.Content.ReadAsByteArrayAsync()))
End Using
End If
仕上げに非同期ブツを待っている間に何か他のものが最初に行うことができるように、いくつかの非同期ブツを行うことの全体のポイントです。
ので
dim task = somethingasync()
doSomething
await task
は意味
しかしawait somethingasync
は、私にはどんな意味がありませんになるだろう。ポイントは何ですか?あなたはとにかく何もしていません。とにかく何かが完了するまで待ってください。実際に
、メインUIスレッドの右側にすべきではない待つオペレータが含まれていても
dim task = somethingasync()
doSomething
await task
スタッフ?これは、ユーザーが待たされることを望まないためです。
ここが問題です。すべてのことが非メインのUIスレッドで発生した場合、結果全体を待つことは何ですか?
なぜ同期バージョンを使用しないのですか?
スニペットはバックエンド環境からのものでなければなりません。たとえば、Node.JSのようなシングルスレッド非同期モデルでは、これは完璧な意味を持ちます(非同期操作を待っている間に同時に受信要求を処理できるようにするため)。しかし、.NETのようなマルチスレッドでは?いい考えはありません。このコードを書いている間、誰かが十分な注意を払っていなかったかもしれません。マルチスレッドモデルの@DiligentKeyPresser –
スレッドはスレッドプールに返され、他のものを実行することができます。 I/O操作が完了するのを待っている間、他の要求に応えてください。スレッドをブロックするということは、他の場所で役に立つことがある間にリソースをブロックすることを意味します。 – MarcinJuraszek
これは必ずしもあなたのコードが何か他のことを行うことを意味するわけではありません。通常、UIスレッドは 'await'コードが完了するのを待っている間にあなたのアプリを反応させ続けるために同時にアップデートを処理できます。 – Enigmativity