从Windows Phone 8调用时,所有wcf方法都返回void

时间:2014-01-06 11:44:47

标签: windows-phone-7 windows-phone-8

当我在我的windows phone 8项目中添加wcf服务引用时,所有服务方法都返回void,

我使用了所有Asyn并等待

 public async void getdata()
        {
            ServiceReference1.BALClient service = new ServiceReference1.BALClient();
            var list=await service.Get_ListAsync("SQL");      
        }
  

错误错误无法将void分配给隐式类型的局部变量
                   无法等待无效

当我使用Asyn并使用也无效的eventArgs完成时

    public async void getdata()
      {    
            service.helloAsync();
                   service.helloCompleted += new EventHandler<ServiceReference1.helloCompletedEventArgs>(service_helloCompleted);

      }
   public void service_helloCompleted(object sender, viceReference1.helloCompletedEventArgs e)
     {
                   string i = e.Result;
     }

3 个答案:

答案 0 :(得分:0)

你可以尝试类似的东西:

ServiceReference1.BALClient.Get_ListCompleted +=  new EventHandler<Get_ListCompletedEventArgs>(ListFromClientCompleted);
ServiceReference1.BALClient.Get_ListAsync("SQL");

然后用另一种方法

void ListFromClientCompleted(object sender, Get_ListCompletedEventArgse)
    {
        if (e.Error==null)
        {
            //Do something with e.Result;
        }
    }

答案 1 :(得分:0)

对于某些平台,WCF客户端不会创建任务返回(TAP-style)异步方法。相反,它会创建EAP-style方法。

我建议您为EAP方法as described on MSDN创建一个TAP包装器。我相信你当前尝试不起作用的原因是因为你在开始操作后分配了处理程序。

答案 2 :(得分:0)

有些人正在进行搜索和搜索,我得到了解决方案

确保网络服务具有机器IP的完整地址。

> http://localhost:6060/Web_new

make ip address而不是localhost

> http://192.160.16.1:6060/Web_new