2013-02-22 58 views
0

我在WP7中的日誌記錄操作有問題。當我單擊LogInButton時,它不會在代理中獲得提示= e.Result的值。我可以做些什麼等待異步呼叫結束?我雖然關於線程。睡覺,但我想這是不能夠在WP 7等待,直到異步獲得價值Windows Phone 7

namespace WP7App 
{ 
public partial class MainPage : PhoneApplicationPage 
{ 
    bool prompt; 
    // Constructor 
    public MainPage() 
    { 
     InitializeComponent(); 
    } 
    // login operation 
    private void Log(string username, string passwd) 
    { 
     Service1Client proxy = new Service1Client(); 
     proxy.LogInCompleted += new 
     EventHandler<LogInCompletedEventArgs>(proxy_LogInCompleted); 
     proxy.LogInAsync(username, passwd); 

    } 
    public void proxy_LogInCompleted(object sender, LogInCompletedEventArgs e) 
    { 
     prompt = e.Result;    
    } 
    //button action 
    void LogInButton_Click(object sender, RoutedEventArgs e) 
    { 
     if (LoginBox.Text == null) { MessageBox.Show("please fill login box"); } 
     if (PasswdBox.Password == null) { MessageBox.Show("enter your password"); } 
     string login = LoginBox.Text; 
     string passwd = PasswdBox.Password;    
     Log(login, passwd); 
     if (prompt == true) 
     { 
      NavigationService.Navigate(new Uri("/Pages/MainLogged.xaml", UriKind.Relative)); 
     } 
     else 
     { 
      MessageBox.Show("logging failed"); 
     } 
    }        
} 

}

+0

異步的重點在於你無法做到這一點。 – SLaks 2013-02-22 19:08:41

+0

但是,當我點擊它顯示「登錄失敗」的消息,我必須保持按鈕一會兒,將其傳遞到下一個窗口。也許有一種方法可以完成異步並傳遞結果? – bohunn 2013-02-22 19:16:02

+0

如果您可以定位'.NET Framework 4.0',則應該可以使用Task.WaitAll完成此操作。您可能不得不等待「Windows Phone 7.8 SDk」發佈。它已經發布:http://www.microsoft.com/en-us/download/details.aspx?id=36474 – 2013-02-22 19:55:19

回答

0

你應該做的僅僅是提供用戶信息的唯一要做的事情,有些操作仍在運行。

如果您真的需要這樣做(操作結果對於應用程序是必需的),可以通過某種方式來阻止用戶進行其他操作(例如應在啓動異步操作之前顯示的全屏面板,它已經完成)。