Public Shared Async Function getMarketDetailFromAllExchangesAsync() As Task
Dim taskList = New List(Of Task)
Dim starttime = jsonHelper.currentTimeStamp
LogEvents("Start Getting Market Detail of All")
For Each account In uniqueAccounts().Values
Dim newtask = account.getMarketInfoAsync().ContinueWith(Sub() account.LogFinishTask("GetMarketDetail", starttime))
taskList.Add(newtask)
'newtask.ContinueWith(Sub() LogEvents(account.ToString))
Next
Await Task.WhenAll(taskList.ToArray)
Dim b = 1
End Function
有没有办法做.继续(子(( 帐户。LogFinishTask("GetMarketDetail", starttime(( with addressOf 代替?
如何?
您需要
创建一个满足任何现有ContinueWith
重载的方法。
在您的特定情况下,它应该满足Action(Of Task)
的签名。
但是,由于ConitnuesWith
您使用的是account
实例,因此您将无法将执行循环的类的方法一起使用AddressOf
。
作为解决方法,您可以在account
类中创建所需的方法
Public Class Account
Public Sub LogFinishedMarketDetail(task As Task)
Dim starttime = jsonHelper.currentTimeStamp
Me.LogFinishTask("GetMarketDetail, starttime")
End Sub
End Class
用法
For Each account In uniqueAccounts().Values
Dim newtask =
account.getMarketInfoAsync().ContinueWith(AddressOf account.LogFinishedMarketDetail)
taskList.Add(newtask)
Next
建议 - 将Option Strict
设置为 On
- 将通过在编译时而不是运行时显示可能的错误来节省开发人员的时间。