WPF如何模拟等待期

时间:2020-05-24 16:44:02

标签: c# wpf

我有一个简单的WPF应用,正在尝试模拟等待加载的想法。我以为我可以在下面的代码段中做一个Thread.Sleep,但是在将忙碌指示器设置为false之前,它没有休眠10秒钟。

我在这里缺少有关WPF的什么概念,如何模拟等待时间?

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        Thread.Sleep(10000);
        LogonBusyIndicator.IsBusy = false;

    }

1 个答案:

答案 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;
    };
}