1

以下代码无法编译并出现错误:Value of type 'System.Threading.Tasks.Task(Of System.Data.DataTable)' cannot be converted to 'System.Data.DataTable

Private m_country_dt As DataTable = getCountriesAsync()


Private Async Function getCountriesAsync() As Task(Of DataTable)
    Dim dt As DataTable = Await Task(Of DataTable).Factory.StartNew(Function() getCountries_dt())

    Return dt
End Function

Private Function getCountries_dt() As DataTable
    Dim sp As New dbCore.StoredProcedure
    Return sp.GetAllCountries()
End Function

有人可以告诉我我在这里可能做错了什么吗?GetAllCountries是一个查询 SQL 数据库中所有国家/地区的函数,并以DataTable. 此代码位于模块内部。

4

1 回答 1

3

你必须用Await它来解开Task (Of DataTable).

在旁注中,您应该更喜欢Task.RunTask.Factory.StartNew(我在我的博客上描述了原因)虽然在这种情况下,我会尝试使用 ADO.NET 异步方法,而不是仅在后台任务上运行同步方法。

于 2013-09-11T20:30:24.183 回答