How to put delay before doing an operation in WPF How to put delay before doing an operation in WPF wpf wpf

How to put delay before doing an operation in WPF


The call to Thread.Sleep is blocking the UI thread. You need to wait asynchronously.

Method 1: use a DispatcherTimer

tbkLabel.Text = "two seconds delay";var timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(2) };timer.Start();timer.Tick += (sender, args) =>    {        timer.Stop();        var page = new Page2();        page.Show();    };

Method 2: use Task.Delay

tbkLabel.Text = "two seconds delay";Task.Delay(2000).ContinueWith(_ =>    {      var page = new Page2();     page.Show();   });

Method 3: The .NET 4.5 way, use async/await

// we need to add the async keyword to the method signaturepublic async void TheEnclosingMethod(){    tbkLabel.Text = "two seconds delay";    await Task.Delay(2000);    var page = new Page2();    page.Show();}