C# 延迟呼叫+;更新UI上的倒计时
我想延迟加载数据1到20秒。我还想用倒计时更新UI,如“更新x中的数据…” 我可以做Task.Delay、dispatchermer或Aysnc/await,但如何用每秒钟的倒计时更新UI 示例来阐明我的观点(这对我来说不起作用,因为这会阻塞UI线程)C# 延迟呼叫+;更新UI上的倒计时,c#,.net,wpf,C#,.net,Wpf,我想延迟加载数据1到20秒。我还想用倒计时更新UI,如“更新x中的数据…” 我可以做Task.Delay、dispatchermer或Aysnc/await,但如何用每秒钟的倒计时更新UI 示例来阐明我的观点(这对我来说不起作用,因为这会阻塞UI线程) 如何做到这一点有很多选择。我实现了其中的两个。我想推荐第二种,但这取决于你的需要 private void Update1() { Task.Factory.StartNew(() =>
如何做到这一点有很多选择。我实现了其中的两个。我想推荐第二种,但这取决于你的需要
private void Update1()
{
Task.Factory.StartNew(() =>
{
var random = new Random();
var counter = random.Next(1, 20);
for (int i = counter; i > 0; i--)
{
Dispatcher.Invoke(() => UpdateCounter = i);
Task.Delay(1000).Wait();
}
Dispatcher.Invoke(// some function to update data...);
}
);
}
private async Task Update2()
{
var random = new Random();
var counter = random.Next(1, 20);
for (int i = counter; i > 0; i--)
{
UpdateCounter = i;
await Task.Delay(1000);
}
// some function to update data...
}
我可以执行任务。延迟、Dispatchermer或Aysnc/await
好的,那么您使用这些工具编写的解决方案是什么,具体来说,它们有哪些不起作用?
private void Update1()
{
Task.Factory.StartNew(() =>
{
var random = new Random();
var counter = random.Next(1, 20);
for (int i = counter; i > 0; i--)
{
Dispatcher.Invoke(() => UpdateCounter = i);
Task.Delay(1000).Wait();
}
Dispatcher.Invoke(// some function to update data...);
}
);
}
private async Task Update2()
{
var random = new Random();
var counter = random.Next(1, 20);
for (int i = counter; i > 0; i--)
{
UpdateCounter = i;
await Task.Delay(1000);
}
// some function to update data...
}