Silverlight 4 Асинхронная проблема - PullRequest
1 голос
/ 12 ноября 2010

Я создаю приложение в Silverlight 4. Первый экран, с которым контактирует пользователь, - это экран входа в систему (Login.xaml).Я написал следующий код в файле Login.xaml.cs.

private void btnSubmit_Click(object sender, RoutedEventArgs e)
{
    //first validate if the user is authorised for this application
    if (this.ValidateEntry())
    {
        if (UserAuthenticationBL.AuthenticateUser(txtUserName.Text.Trim(), txtPassword.Password.Trim()))
        {
            //since the user is authenticated we will show the dashboard screen
            this.Content = new MainPage();
        }
        else
        {
            this.ShowErrorMessage("Invalid username or password");
            txtUserName.Focus();
        }
    }
}

Моя проблема заключается в том, что код выполняется перед тем, как я получу данные в методе AuthenticateUser.Код немедленно сводится к «Неверное имя пользователя или пароль», и список загружается после завершения всего выполнения на странице xaml.

Я знаю, что с асинхронной вещью что-то не так ия также знаю, что мне нужно поставить событие, чтобы узнать, когда загрузка завершится ........

, но я не знаю, как это сделать !!!Может кто-то, пожалуйста, пролить свет на этот вопрос ...

спасибо.

1 Ответ

0 голосов
/ 12 ноября 2010

Если я правильно понял, ваш метод AuthenticateUser выполняет async, верно?

Вы должны определить обратный вызов для события AuthenticateUserComplete и запустить метод в событии отправки кнопки.В обратном вызове напишите это условие if / else, тогда оно будет вызвано после завершения асинхронного метода.

Только один вопрос, почему вы делаете асинхронно, если ваше поведение должно быть синхронным?(Вы должны получить ответ, прежде чем решить, что делать).

Это http://msdn.microsoft.com/en-us/library/aa719598%28VS.71%29.aspx может быть полезным:)

Оскар

...