【问题标题】:UI Doesn't Show ProgressBar Progress in WPF ProjectUI 不显示 WPF 项目中的 ProgressBar 进度
【发布时间】:2021-03-27 03:10:09
【问题描述】:

我有一个 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%,你能告诉我这里出了什么问题吗? 请帮我解决这个问题。

【问题讨论】:

标签: c# wpf


【解决方案1】:

我在这里找到了解决方案:Making a progress bar update in real time in wpf 谢谢你,格林杰德。 我的新代码:

        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);
        });

【讨论】:

  • 混合任务和线程绝不是一个好主意 - 选择其中一个。
  • 任务是针对ui的,但是线程在另一个项目中做其他事情,实际上线程在数据层加载数据,所以我需要一个线程在后台执行它,我需要避免任务ui冻结并更新ui,现在可以了,但我以后会找到更好的解决方案,谢谢你的建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-19
  • 1970-01-01
  • 1970-01-01
  • 2017-11-17
  • 1970-01-01
  • 1970-01-01
  • 2019-01-12
相关资源
最近更新 更多