簡體   English   中英

UI 不顯示 WPF 項目中的 ProgressBar 進度

[英]UI Doesn't Show ProgressBar Progress in WPF Project

我有一個 Planner 應用程序項目,當我從數據庫中獲取數據以向用戶顯示進度時,我創建了一個等待用戶控件,因此我為此目的編寫了以下代碼:

    public void LoadDestinationList()
    {
        Dispatcher.Invoke(new Action(() =>
        {
            WS_PPB.Value = 10;
            RDFDB_Class MyClass = new RDFDB_Class(TaskType);
            WS_PPB.Value = 25;
            Thread MyThread = new Thread(new ThreadStart(MyClass.LoadDataFromDb));
            WS_PPB.Value = 40;
            MyThread.IsBackground = true;
            MyThread.Start();
            WS_PPB.Value = 55;
            while (MyThread.IsAlive)
            {
                WS_PPB.Value = 75;
            }
            WS_PPB.Value = 100;
        }));
    }

但我不知道為什么在從數據庫檢索數據后加載 UserControl 並且它只在進度條中顯示 100%,你能告訴我這里有什么問題嗎? 請幫我解決這個問題。

我在這里找到了解決方案:在 wpf 中實時更新進度條,謝謝 greenjaed。 我的新代碼:

        await Task.Run(() => 
        {

            WSMainUC.WS_PPB.Dispatcher.Invoke(() => WS_PPB.Value = 15, DispatcherPriority.Background);
            RDFDB_Class MyClass = new RDFDB_Class(TaskType);
            WSMainUC.WS_PPB.Dispatcher.Invoke(() => WS_PPB.Value = 30, DispatcherPriority.Background);
            Thread MyThread = new Thread(new ThreadStart(MyClass.LoadDataFromDb));
            MyThread.IsBackground = true;
            MyThread.Start();
            WSMainUC.WS_PPB.Dispatcher.Invoke(() => WS_PPB.Value = 50, DispatcherPriority.Background);
            while (MyThread.IsAlive)
            {
                WSMainUC.WS_PPB.Dispatcher.Invoke(() => WS_PPB.Value = 75, DispatcherPriority.Background);
            }
            WSMainUC.WS_PPB.Dispatcher.Invoke(() => WS_PPB.Value = 100, DispatcherPriority.Background);
        });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM