使用任务校准微更新进度条

时间:2012-09-14 02:56:55

标签: c# progress-bar caliburn.micro

我遇到了这个问题,一直在使用caliburn micro,我正在尝试更新我的进度条。但没有发生任何事情。 我已经在这里阅读了几个关于它的线程,我被卡住了,它只是没有更新

你能看到我的代码出了什么问题吗? 我的xaml是这样的:

<ProgressBar x:Name="PbEstadoConfig" FlowDirection="LeftToRight" Width="200" Height="30" Margin="6,0,572,0">

在我的视图模型中,我有以下代码:

private double _pbEstadoConfig;
            public double PbEstadoConfig
            {
                get { return _pbEstadoConfig; }
                set
                {
                    _pbEstadoConfig = value;
                    NotifyOfPropertyChange(() => PbEstadoConfig);
                }
            }

     public void Seguinte()
            {
                var t = Task.Factory.StartNew(() =>ActualizaPB("seguinte"));


            }
    protected void ActualizaPB(string value){
     PbEstadoConfig += 20.0;

}

2 个答案:

答案 0 :(得分:1)

我认为您的进度条上可能缺少最大/最小值。

以下是我正在进行的校准微项目中的工作标记,我没有必要编写任何自定义约定

    <ProgressBar Name="Progress" Maximum="1" Minimum="0" Margin="0,22,0,0" Grid.Row="1" Height="20"  Grid.ColumnSpan="2"></ProgressBar>

支持属性:

    public double Progress
    {
        get { return _progress; }
        set
        {
            _progress = value;
            NotifyOfPropertyChange(() => Progress);
        }
    }

答案 1 :(得分:1)

我对使用Caliburn.Micro提供的WPF MVVM编程的经验是,在长时间运行的例程中,UI线程将被锁定,因此进度条在长时间运行的例程中不会更新,因为它在同一个线程上。因此,我遵循this page from Stephen上的建议,并实现了他的ProgressReporter类以及System.Threading库