Приложение в зависшем состоянии при нажатии на всплывающее окно

Я пытаюсь отобразить всплывающее окно в правом нижнем углу экрана во время входа в мою программу.

На странице, на которую я звоню во время входа, есть telerik radbusyindicator. После входа в систему открывается страница, на которой отображается индикатор занятости и всплывающее окно, которое работает нормально.

Но если я нажимаю на всплывающее окно во время работы индикатора занятости, моя программа зависает (т.е. она перестает отвечать на запросы, и мне приходится убивать процесс из диспетчера задач).

Может кто-нибудь помочь мне здесь.

для ссылки на код я использую WPF.

Спасибо

1 ответ

Решение

Вам нужно использовать ключевые слова "async" и "await", чтобы ваш пользовательский интерфейс реагировал при выполнении чего-либо в фоновом режиме. таким образом, все, что вы выполняете в фоновом режиме, будет выполнено для другой задачи и не замораживает ваш пользовательский интерфейс:

 private async void LoginButtonClick(object sender, RoutedEventArgs e)
 {
     try
     {
         radbusyindicator.Visibility = Visibility.Visible;
         await LoginAsync();
         radbusyindicator.Visibility = Visibility.Hidden;
     }
     catch (Exception)
     {      
     }
 }

 private async Task<string> LoginAsync()
 {
    try
    {
        var loginTask = await Task.Run(() =>
        {
             Login();
             return "Login Successfully !"
        });
        return loginTask.Result;
    }
    catch (Exception ex)
    {

    }
}
Другие вопросы по тегам