单击弹出窗口时应用程序处于挂起状态

时间:2016-10-12 10:13:43

标签: .net wpf c#-4.0 telerik busyindicator

我尝试在我的程序中登录时在屏幕右下角显示一个弹出窗口。

我在登录时呼叫的页面有一个telerik radbusyindicator。登录后,页面将打开并显示忙碌指示符和弹出窗口,工作正常。

但是如果我在繁忙指示灯工作时点击弹出窗口,我的程序就会被挂起(即它变得没有响应,我必须从任务管理器中删除该进程)。

任何人都可以帮助我。

代码参考,我使用WPF。

由于

1 个答案:

答案 0 :(得分:2)

您需要使用“async”和“await”关键字,以便您的UI在后台执行某些操作时能够做出响应。这样,无论你在背景幕上执行什么,都将在不同的任务上执行,而不是冻结你的UI:

 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)
    {

    }
}