等待async获得值WindowsPhone7

本文关键字:WindowsPhone7 async 等待 | 更新日期: 2023-09-27 18:00:31

我在WP7中的日志操作有问题。当我点击LogInButton时,它不会得到提示=e的值。结果是代理。我该怎么做才能等到异步调用结束?我想到了Thread。睡吧,但我想在WP 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");
        }
    }                            
}

}

等待async获得值WindowsPhone7

您唯一应该做的就是提供用户信息,即某些操作仍在运行。

如果你真的需要(操作结果对应用程序来说是必要的),可以通过某种方式来完成,阻止用户进行其他操作(比如全屏面板,它应该在启动异步操作之前显示,并在操作完成时关闭)。