製品ごとにさまざまなファイルを収集する方法があります。他のWebサイトからファイルをダウンロードするため、そのメソッドを非同期にしたいと考えています。このコードを作成しました:
For Each product In productList
If model.Sds Then
Dim sdsTask As Task(Of ZipFile) = Task(Of ZipFile).Factory.StartNew(Function() GetSafetyDataSheets(product.Product))
sdsTask.ContinueWith(Sub(t)
product.SDS = t.Result
Debug.WriteLine("test")
End Sub, TaskContinuationOptions.OnlyOnRanToCompletion)
taskList.Add(sdsTask)
End If
If model.Apb Then
Dim apbTask As Task(Of List(Of ZipFile)) = Task(Of List(Of ZipFile)).Factory.StartNew(Function() GetAPB(product.Product, model.Department))
apbTask.ContinueWith(Sub(t) product.Instruction = t.Result)
taskList.Add(apbTask)
End If
If model.Pdb Then
Dim pdbTask As Task(Of ZipFile) = Task(Of ZipFile).Factory.StartNew(Function() GetProductDatasheet(product.Product))
pdbTask.ContinueWith(Sub(t) product.PDB = t.Result)
taskList.Add(pdbTask)
End If
Next
Task.WaitAll(taskList.ToArray)
しかし、それが待っていて、製品リストの製品の SDS、APB、または PDB にアクセスしようとすると、それらは単なる空のオブジェクトです。私の「ゲッター」メソッドは問題なく返されることがわかりますが、データは product.SDS プロパティなどには到達しません。