У меня есть синхронный код, который выглядит следующим образом:
Sub button_Click(sender As Object, e As EventArgs) Handles button.Click
Dim dt As DataTable = GetDataTable()
' Do some stuff with dt.
End Sub
Function GetDataTable() As DataTable
' Bunch of connection and command parameters.
DataAdapter.Fill(ds, "Data")
Return ds.Tables("Data")
End Function
В моем button.Clicked
событии (или любом другом методе) я мог бы вернуть несколько таблиц данных для разных вещей. Поскольку код является синхронным, время выполнения метода ограничено суммой времени выполнения каждого из запросов.
Я хочу запускать каждую функцию, возвращающую DataTable асинхронно, так что я ограничен только самым медленным запросом.
Я не могу понять, как мне это делать, я попробовал следующее:
Private Async Sub button_Click(sender As Object, e As EventArgs) Handles button.Click
Dim dt As DataTable = Await GetDataTable()
' Do some stuff with dt.
End Sub
Function GetDataTable() As Task(Of DataTable)
' Bunch of connection and command parameters.
DataAdapter.Fill(ds, "Data")
Return ds.Tables("Data")
End Function
Но это дает ошибку Value of type 'DataTable' cannot be converted to 'Task(Of DataTable)'
на Return ds.Tables("Data")
Что я здесь не так делаю?