我想了解異步/等待。我知道你不應該等待一個CPU限制的方法,但爲了幫助我理解,我很好奇如果你這樣做會發生什麼。考慮:VB.NET:如果我使用Await運行CPU綁定代碼會發生什麼?
Public Async Function DoSomeTasks()
Await LongRunningCPUBoundMethod1()
LongRunningCPUBoundMethod2()
End Function
Public Async Function LongRunningCPUBoundMethod1() As Task
' Do stuff synchronously
End Function
Public Sub LongRunningCPUBoundMethod2()
' Do stuff synchronously
End Sub
Task Scheduler如何處理CPU資源?這些方法以什麼順序執行? LongRunningCPUBoundMethod1或LongRunningCPUBoundMethod2會先執行嗎?
不等待[等待任務完成](https://docs.microsoft.com/en-us/downloads/default.aspx)。com/en-us/dotnet/csharp/language-reference/keywords/await),直到完成剩下的任務? –
是的,等待強制任務對象解析其結果。如果您沒有等待,那麼由LongRunningCPUBoundMethod1()返回的對象將成爲任務對象。 –
victor
認爲這篇文章https://blog.stephencleary.com/2012/02/async-and-await.html(和其他在同一頁)將解釋你這個專題。 –