Win8到WP App异步/等待对话

时间:2014-02-26 16:09:49

标签: c# wcf asynchronous windows-phone-8 windows-8

在将Windows 8应用程序转换为Windows Phone但遇到WCF连接和异步通信问题的过程中。总而言之,我正在尝试调用连接到Ms SQL Server的WCF服务,但是对于所有“await serviceClient.getEmployeesAsync();”或类似内容,都会收到“无法等待无效”。

解决此问题的最简单方法是什么,因为我有很多类似于此的方法,可以在Windows 8应用程序中正常工作,但不适用于Windows Phone应用程序。

private async void btnGetAllStaff_Click(object sender, RoutedEventArgs e)
    {
        //Create a client object to access the service
        DataProvider.DataProviderClient serviceClient = new DataProvider.DataProviderClient();

        //Get the staff objects from the service
        ObservableCollection<DataProvider.Employee> employees = await serviceClient.getEmployeesAsync();

        //Add the objects to the list view
        foreach (DataProvider.Employee employee in employees)
        {
            lstStaff.Items.Add(employee.FirstName+" "+employee.LastName);
        }
    }

我应该补充一点,我是WCF和网络编程的新手!!

由于

1 个答案:

答案 0 :(得分:0)

Visual Studio内置的WCF代理生成器将生成TAP methods,但前提是它知道客户端平台本身支持async。否则,它将创建APMEAP个端点。您所看到的是,以Async结尾的客户端代理方法在Windows应用商店平台上是TAP,在Windows Phone平台上是EAP。

您最好的办法是尝试在项目中重用WCF客户端代理代码;例如,将其放在可移植类库中并使用生成的TAP方法。如果您无法使其工作,请将客户端代理放入PCL并创建TAP wrappers for the APM endpoints