我有一个简单的WPF应用,正在尝试模拟等待加载的想法。我以为我可以在下面的代码段中做一个Thread.Sleep
,但是在将忙碌指示器设置为false之前,它没有休眠10秒钟。
我在这里缺少有关WPF的什么概念,如何模拟等待时间?
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Thread.Sleep(10000);
LogonBusyIndicator.IsBusy = false;
}
答案 0 :(得分:2)
请勿在UI应用程序的主线程中调用Thread.Sleep
。它将阻止线程并因此阻止UI。
您可以改为在异步Task.Delay
事件处理程序中等待Loaded
调用:
public MainWindow()
{
InitializeComponent();
Loaded += MainWindow_Loaded;
}
private async void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
await Task.Delay(10000);
LogonBusyIndicator.IsBusy = false;
}
或
public MainWindow()
{
InitializeComponent();
Loaded += async (s, e) =>
{
await Task.Delay(10000);
LogonBusyIndicator.IsBusy = false;
};
}