VB Async/await 不适用于数据表
Posted
技术标签:
【中文标题】VB Async/await 不适用于数据表【英文标题】:VB Async/await not working with datatables 【发布时间】:2012-12-06 07:42:57 【问题描述】:我在将此方法从 c# 转换为 VB 时遇到了一些问题,它在 C# 中完美运行:
private async void Test()
DataSet dt;
var client = new xxxSoapClient();
dt = await client.ToDoAsync();
我在 VS 2012 中使用 Async/await,在 c# 中一切正常,但是当尝试在 VB 中执行完全相同的操作时,它返回一个错误,表明 system.void 不可等待!!!
Private Async Sub Test()
Dim dt As DataTable
Dim Client As New xxxSoapClient
dt = Await Client.ToDoAsync()
End Sub
webservice 只是返回一个简单的数据表,有人知道吗?
【问题讨论】:
【参考方案1】:VS2012 之前的 WCF 代理生成器会生成 *Async
方法,这些方法返回 void
并使用事件发出完成信号。从 VS2012 开始,默认情况下 WCF 代理生成器将生成返回 Task<T>
的 *Async
方法。
尝试重新生成代理。
如果这不起作用,请检查您的“高级”选项以了解要创建的异步方法的样式。还有three styles:异步编程模型(APM)使用Begin*
/End*
/IAsyncResult
;基于事件的异步模式(EAP)使用*Async
/*Completed
/AsyncCompletedEventArgs
;基于任务的异步模式 (TAP) 使用 *Async
/Task
。
TAP 可以自然地与 async
/await
配合使用,这就是您想要的。
【讨论】:
以上是关于VB Async/await 不适用于数据表的主要内容,如果未能解决你的问题,请参考以下文章
async/await 不适用于 ComponentDidMount 中的 react.js
嵌套的 try、catch 和 async、await 请求