我在将这个方法从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只返回一个简单的数据表,想法有人吗?
答案 0 :(得分:0)
VS2012之前的WCF代理生成器将生成返回*Async
的{{1}}方法,并使用事件发出完成信号。从VS2012开始,默认情况下,WCF代理生成器将生成返回void
的{{1}}方法。
尝试重新生成代理。
如果这不起作用,请检查“高级”选项以了解要创建的异步方法的样式。有three styles:异步编程模型(APM)使用*Async
/ Task<T>
/ Begin*
;基于事件的异步模式(EAP)使用End*
/ IAsyncResult
/ *Async
;基于任务的异步模式(TAP)使用*Completed
/ AsyncCompletedEventArgs
。
TAP与*Async
/ Task
一起使用,这就是您想要的。