await が機能する async の簡単な例を取得しようとしていますが、そうではないと思います。for each ループ内の各関数は非同期で実行されるはずなので、このコードの実行には 10 秒 (または 10 秒強) かかるはずだと考えています。
これは asp.net Web フォームで、Async="true" がページ宣言に含まれています。
Inherits System.Web.UI.Page
Protected Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'This needs to execute different asynchronous processes based on the array value
Dim ItemList(2) As String
ItemList(0) = "A"
ItemList(1) = "B"
ItemList(2) = "C"
Dim time_start As DateTime
Dim time_end As DateTime
Dim r1 As String
Dim r2 As String
Dim r3 As String
'capture start time
time_start = DateTime.Now
'run async processes for each item in array
For Each element As String In ItemList
Select Case element
Case "A"
r1 = Await processAsyncA(10) & " "
Case "B"
r2 = Await processAsyncB(10) & " "
Case "C"
r3 = Await processAsyncC(10) & " "
End Select
Next
'capture end time
time_end = DateTime.Now
'display total duration in seconds
Label1.Text = DateDiff(DateInterval.Second, time_start, time_end)
End Sub
Protected Async Function processAsyncA(ByVal waittime As Integer) As Task(Of String)
Await Task.Delay(waittime * 1000)
Return waittime.ToString
End Function
Protected Async Function processAsyncB(ByVal waittime As Integer) As Task(Of String)
Await Task.Delay(waittime * 1000)
Return waittime.ToString
End Function
Protected Async Function processAsyncC(ByVal waittime As Integer) As Task(Of String)
Await Task.Delay(waittime * 1000)
Return waittime.ToString
End Function
前もって感謝します!