我有一种方法可以为我的每个产品收集各种文件。我想让该方法异步,因为它从其他网站下载文件。我做了这个代码:
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 时,它们只是空对象。我可以看到我的“getter”方法返回得很好,但是数据永远不会进入 product.SDS 属性等。