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 に答える