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();}