0

基本上,我在我的手機應用程序中使用WCF調用來檢索密碼,但是當它需要時它不會觸發,並且我不確定在哪裏放置電話。異步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

我實際上把一個必須完成後的檢查解決了這個問題(因爲它是異步有人跳過這些直線距離),在已完成的方法,並能正常工作。然而,空響應的結果是由於返回序列化錯誤的結果。但是,謝謝你的幫助。 – 2013-04-24 10:13:27