メールヘッダーから値を抽出する関数があります。スピードアップするために、フレームワーク 4.5 の async を使用したいと考えていました。これは、非同期を使用する最初の試みです。
抽出関数を非同期で数回連続して呼び出して、さまざまな値を取得しています。メールヘッダーから。私が問題を抱えているのは、すべてのインスタンスがいつ完了したかを知る方法です。例は見つかりましたが、条件付きタスクの状況に合うものはありませんでした。
私はする必要があると信じています:
- タスク配列を暗くする
- 必要な各タスクを配列に追加します
- その後、 Task.WhenAll を使用します
しかし、私はそれを行う方法がわかりません。
'Extract these vars from header if no value was passed
'Calling HeaderExtract Async for speed
If Len(sClient) = 0 Then
sClient = HeaderExtractAsync("Client,", sHeaders).Result
' --> Add this as a new task?
End If
If Len(sSubscriptionNum) = 0 Then
sSubscriptionNum = HeaderExtractAsync("SubscriptionNum,", sHeaders).Result
End If
If Len(sTargetID) = 0 Then
sTargetID = HeaderExtractAsync("TargetID,", sHeaders).Result
End If
If Len(sAddressBook) = 0 Then
sAddressBook = HeaderExtractAsync("AddressBook,", strHeaders).Result
End If
' --> Check that all are done?