我调用一个函数,返回一个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)。
我应该忽略此警告还是应该以其他方式这样做?
答案 0 :(得分:0)
如果由于需要遵守某些API而需要使方法保持异步,请尝试以下操作:
Function GetDataTable() As Task(Of DataTable)
'Connection objects etc
OracleDataAdapter.Fill(ds, "Table")
Return Task.FromResult(ds.Tables("Table"))
End Function