重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

非同期処理の勉強中です。
以下のコードで、一つ目のAwait Task.WaitAll(tasks1)Taskは、BC30311 型 'List(Of Task)' の値を 'Task' に変換できません。とエラーになります。
しかし、二つ目の Await Task.WhenAll(tasks2)は、エラーになりません。
なぜでしょうか?
詳しい方イラッシャイマシタラ教えて頂けないでしょうか?
宜しくお願い致します。
Async Sub WhenAllTest()
Dim tasks1 As New List(Of Task)
Dim t1 As New Task(Sub()
'実態
End Sub)
t1.Start()
tasks1.Add(t1)
Await Task.WaitAll(tasks1)

Dim tasks2 As New List(Of Task(Of String))
Dim t2 As New Task(Of String)(Function()
'実態
Return " "
End Function)
t2.Start()
tasks2.Add(t2)
Await Task.WhenAll(tasks2)
End Sub

A 回答 (1件)

WaitAll()とWhenAllの違いかと。



Public Shared Sub WaitAll (ParamArray tasks As Task())
Public Shared Function WhenAll (tasks As IEnumerable(Of Task)) As Task

「Await Task.WhenAll(tasks1)」でよいのでは。
「tasks1.ToArray()」にするという手も。
    • good
    • 0
この回答へのお礼

きっ!気づかなかった!
両方とも、WhenAllでした。
2日間も悩んでいた!
ミスタイプとは・・・
大変助かりました。

お礼日時:2021/01/28 17:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!