0

WP7 でのロギング操作に問題があります。LogInButton をクリックすると、prompt = e.Result に値が表示されません。非同期呼び出しが終了するまで待つにはどうすればよいですか? 私はスレッドについて考えました。スリープしますが、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");
        }
    }                            
}

}

4

1 に答える 1

0

あなたがしなければならない唯一のことは、いくつかの操作がまだ実行されているというユーザー情報を提供することです。

それが本当に必要な場合(操作結果はアプリケーションに必要です)、ユーザーが別の操作を実行できないようにする方法で実行できます(非同期操作を開始する直前に表示され、完了時に閉じるフルスクリーンパネルなど)。

于 2013-02-22T19:09:23.377 に答える