繁体   English   中英

在UI上延迟调用+更新CountDown

[英]Delay Call + Update CountDown on UI

我想延迟加载数据1到20秒之间的任何时间。 我还想更新具有倒计时的UI以更新,例如“在x中更新数据...”

我可以做Task.Delay,或DispatcherTimer或Aysnc / await,但如何每​​隔倒计时更新一次UI?

示例提出我的观点(这对我不起作用,因为这是阻止UI线程)。

private void Update()
    {
        var random = new Random();
        var counter = random.Next(1, 20);
        for (int i = counter; i > 0; i--)
        {
            UpdateCounter = i;// property bound to UI to update the countdown
            Thread.Sleep(1000); // 
        }
        // some function to update data...
    }

如何做有很多选择。 我实施了其中两个。 我建议第二,但这取决于你的需求。

    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...
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM