当尝试在 WPF 中执行操作之前引入延迟时,避免使用 Thread.Sleep 很重要,因为这方法会阻塞 UI 线程并可能导致用户界面无响应。相反,请考虑利用异步编程技术。
一个选择是使用 DispatcherTimer。此计时器在 UI 线程上运行,并在指定的时间间隔后调用其 Tick 事件处理程序:
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(); };
另一种方法涉及使用 Task.Delay:
tbkLabel.Text = "two seconds delay"; Task.Delay(2000).ContinueWith(_ => { var page = new Page2(); page.Show(); });
这里,程序创建一个任务,该任务在 2 秒延迟后完成,然后调用延续委托来显示新页面。
最后,对于面向 .NET 4.5 或更高版本的项目,async/await 模式提供了一种简洁且方便的方法来处理延迟:
public async void TheEnclosingMethod() { tbkLabel.Text = "two seconds delay"; await Task.Delay(2000); var page = new Page2(); page.Show(); }
通过利用异步技术,开发人员可以在 WPF 操作中引入延迟,而不会影响 UI 响应能力。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3