我如何修复'无法从方法组转换为'Func <asynccallback,object,=“”iasyncresult =“”>?

时间:2017-01-09 10:23:30

标签: c# .net wcf xamarin

try
    {
      var login = ToServiceLogin(lgParameters);
      await Task.Factory.FromAsync(loginOperation.BeginLogin,
loginOperation.EndLogin, lgParameters, TaskCreationOptions.None);

    }
    catch (FaultException fe)
    {
        Debug.WriteLine(@"          {0}", fe.Message);
    }
    catch (Exception ex)
    {
        Debug.WriteLine(@"              ERROR {0}", ex.Message);
    }

Task.Factory.FromAsync的第一个参数发生编译错误。我已经阅读了几个关于类似问题的线索似乎没有帮助他们都提到具有不同签名的这一点。请指出正确的方向。

使用签名进行编辑

BeginLogin签名

IAsyncResult BeginLogin(PRPClockingXamarin.PRPServiceMobile.LoginParameters loginParams,
                         AsyncCallback callback, object asyncState);

2 个答案:

答案 0 :(得分:2)

有一个冗长的重载列表,但似乎它不匹配你的

IAsyncResult BeginLogin(
    LoginParameters loginParams,
    AsyncCallback callback, 
    object asyncState);

作为

的论据
  Func<TArg1, AsyncCallback, object, IAsyncResult> beginMethod,

所以我建议为Targ1

指定Type参数
FromAsync<PRPClockingXamarin.PRPServiceMobile.LoginParameters> (...)

还验证lgParameters的类型是否正确。

答案 1 :(得分:0)

使用FromAsync时,我通常建议将参数设置为:begin方法,end方法,begin方法参数(回调/状态除外)和null。最终的null是针对状态的:

await Task.Factory.FromAsync(loginOperation.BeginLogin, loginOperation.EndLogin,
    lgParameters, null);