0

В принципе, я использую вызов WCF в своем приложении для телефона, чтобы получить пароль, однако он не срабатывает, когда я этого хочу, и я не уверен, куда положить вызов.Async WCF не звонит в Windows Phone 7

По сути, я хочу, чтобы приложение для вызова кода, как этот

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

Посмотрев на свой код, я вижу, в одной руке, что вы subsbcribe к 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; 
     } 
    } 
} 
+0

Я на самом деле решить эту проблему, поставив чеки, которые необходимо сделать после того, как (потому что это был Async он пропускал в них сразу) в законченном методе, и она отлично работает. Однако peoblem для нулевых ответов был вызван результатом, возвращающим ошибку сериализации. Но спасибо за вашу помощь. –