Windows Phone 7中未触发异步WCF调用

时间:2013-04-21 09:07:29

标签: c# windows windows-phone-7.1 windows-phone wcf-data-services

基本上,我在我的手机应用程序中使用WCF调用来检索密码,但是当我想要它时它不会触发,而且我不确定在哪里拨打电话。

基本上,我希望应用程序像这样调用代码

  Client.GetPassWordByNameAsync(user);
        Client.GetPassWordByNameCompleted += new EventHandler<GetPassWordByNameCompletedEventArgs>(Client_GetPassWordByNameCompleted);


        if(EnteredPassword == password)
        {
            isAuthenticated = true;
        }

当用户按下登录按钮时,它应该调用服务,获取密码,然后比较,它只是跳过代码并返回null。

这是完成的方法

   void Client_GetPassWordByNameCompleted(object sender, GetPassWordByNameCompletedEventArgs e)
        {
            if (e.Error == null)
            {

            }
            else
            {
                password = e.Result;
            }
        }

非常感谢

1 个答案:

答案 0 :(得分:1)

看一下你的代码,我一方面看到你在调用方法之后将其放入GetPassWordByNameCompleted事件中。另一方面,您不要等到获得比较返回值的响应。以下代码应该有效:

Client.GetPassWordByNameCompleted += ((s, e) =>
{
    if (e.Error == null)
    {

    }
    else
    {
        password = e.Result;
        if(EnteredPassword == password)
        {
                isAuthenticated = true;
        }
    }
});
Client.GetPassWordByNameAsync(user);

或者如果您希望在不同的方法中使用事件处理程序,请首先订阅事件:

    Client.GetPassWordByNameCompleted += new EventHandler<GetPassWordByNameCompletedEventArgs>(Client_GetPassWordByNameCompleted);
    Client.GetPassWordByNameAsync(user);

一旦你获得了结果,你可以做任何你想要的结果:

void Client_GetPassWordByNameCompleted(object sender, GetPassWordByNameCompletedEventArgs e)
{
    if (e.Error == null)
    {

    }
    else
    {
        password = e.Result;
        if(EnteredPassword == password)
        {
            isAuthenticated = true;
        }
    }
}