VB Async /等待不使用数据表

时间:2012-12-19 01:19:27

标签: asynchronous async-await

我在将这个方法从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 个答案:

答案 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一起使用,这就是您想要的。