我尝试在我的程序中登录时在屏幕右下角显示一个弹出窗口。
我在登录时呼叫的页面有一个telerik radbusyindicator。登录后,页面将打开并显示忙碌指示符和弹出窗口,工作正常。
但是如果我在繁忙指示灯工作时点击弹出窗口,我的程序就会被挂起(即它变得没有响应,我必须从任务管理器中删除该进程)。
任何人都可以帮助我。
代码参考,我使用WPF。
由于
答案 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)
{
}
}