0

基本上,我在我的手机应用程序中使用 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;
            }
        }

非常感谢

4

1 回答 1

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;
        }
    }
}
于 2013-04-23T12:34:33.033 回答