BC42356-异步方法缺少用于返回Task(Of DataTable)的函数的'Await'

时间:2019-07-08 09:29:17

标签: vb.net asynchronous async-await

我调用一个函数,返回一个Task(Of DataTable),如下所示(伪代码):

dgv.DataSource = Await GetDataTable()

我的功能GetDataTable()如下所示:

Async Function GetDataTable() As Task(Of DataTable)

    'Connection objects etc
    OracleDataAdapter.Fill(ds, "Table")

    Return ds.Tables("Table")

End Function

但是,我收到上述功能的警告"This async method lacks 'Await' operators and so will run synchronously."

这是有道理的,但可以肯定的是,这是非常普遍的情况,因为您不能Await使用DataAdapter。

我的调用方法是异步的,正在等待函数GetDataTable(),因此返回类型必须为Task(Of DataTable)

为此,该函数必须是异步的(否则我会在Return ds.Tables("Table")上收到一个tyoe错误,因为您无法从DataTable转换为Task(Of DataTable)。

我应该忽略此警告还是应该以其他方式这样做?

1 个答案:

答案 0 :(得分:0)

如果由于需要遵守某些API而需要使方法保持异步,请尝试以下操作:

Function GetDataTable() As Task(Of DataTable)

    'Connection objects etc
    OracleDataAdapter.Fill(ds, "Table")

    Return Task.FromResult(ds.Tables("Table"))

End Function