Bha*_*dur 28 c# wpf dispatcher thread-sleep
我尝试使用以下代码在导航到下一个窗口之前延迟2秒.但线程首先调用,文本块显示一微秒并进入下一页.我听说调度员会这样做.
这是我的片段:
tbkLabel.Text = "two mins delay";
Thread.Sleep(2000);
Page2 _page2 = new Page2();
_page2.Show();
Run Code Online (Sandbox Code Playgroud)
Phi*_*hil 80
对Thread.Sleep的调用阻止了UI线程.您需要异步等待.
方法1:使用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();
};
Run Code Online (Sandbox Code Playgroud)
方法2:使用Task.Delay
tbkLabel.Text = "two seconds delay";
Task.Delay(2000).ContinueWith(_ =>
{
var page = new Page2();
page.Show();
}
);
Run Code Online (Sandbox Code Playgroud)
方法3:.NET 4.5方式,使用async/await
// we need to add the async keyword to the method signature
public async void TheEnclosingMethod()
{
tbkLabel.Text = "two seconds delay";
await Task.Delay(2000);
var page = new Page2();
page.Show();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60450 次 |
| 最近记录: |