簡體   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