我在WP7中的日志记录操作有问题。当我单击LogInButton时,它没有获得值来提示= 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");
}
}
}
}
答案 0 :(得分:0)
您应该做的唯一事情就是提供用户信息,某些操作仍在运行。
如果你确实需要(操作结果是应用程序必需的),它可以通过某种方式完成,阻止用户进行另一项操作(如全屏面板,应在启动异步操作之前显示,并在关闭时关闭)完成)。