2
我在網上找到了這段代碼。是否有任何理由使用等待和異步馬上?
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
做一些異步thingy的重點是,等待異步thingy完成時,可以先做其他事情。
所以
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