wpf ProgressBar не обновляется на последнем ProgressChanged

Я сделал некоторый интерфейс, и у меня есть ProgressBar в нем. Использование шаблона MVVM.

XAML:

<ProgressBar Grid.Row="2" Minimum="0" Maximum="100" Value="{Binding CurrentProgress, Mode=OneWay}"/>

ViewModel (упрощенно):

class MyClass : ViewModelBase
{
    /// <summary>
    /// Fields
    /// </summary>
    private int _currentProgress;
    private readonly BackgroundWorker _worker;
    private int _step; 

    /// <summary>
    /// Properties
    /// </summary>
    public int CurrentProgress
    {
        get
        {
            return _currentProgress;
        }
        set
        {
            if (_currentProgress != value)
            {
                _currentProgress = value;
                RaisePropertyChanged("CurrentProgress");
            }
        }
    }

    /// <summary>
    /// Constructor
    /// </summary>
    public MyClass()
    {
        _step = 10;
        _currentProgress = 0;
        _worker = new BackgroundWorker();
        _worker.DoWork += DoWork;
        _worker.WorkerReportsProgress = true;
        _worker.ProgressChanged += ProgressChanged;
        _worker.RunWorkerCompleted += RunWorkerCompleted;
    }

    /// <summary>
    /// Command 
    /// </summary>
    private RelayCommand _myCommand;
    public RelayCommand MyCommand
    {
        get
        {
            return _myCommand ?? (_myCommand =
                new RelayCommand(_worker.RunWorkerAsync, CanMyCommand));
        }
    }

    private bool CanMyCommand()
    {
        return true;
    }

    /// <summary>
    /// Handlers
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void DoWork(object sender, DoWorkEventArgs e)
    {
        for (int i = 0; i < 10; i++)
            ConsumingMethod();
    }

    private void RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        Thread.Sleep(5000);
        Messenger.Default.Send(new CloseAddDocumentWindow(String.Empty));
    }

    private void ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        CurrentProgress = e.ProgressPercentage;
    }

    /// <summary>
    /// Method
    /// </summary>
    private void ConsumingMethod()
    {
        CurrentProgress += _step;
    }
}

Code-Behind:

 Messenger.Default.Register<CloseAddDocumentWindow>(this, nm =>
 {
      if (nm.Sender == DataContext)
          Close();
 });

Итак, это

 Messenger.Default.Send(new CloseAddDocumentWindow(String.Empty));

это проблема. Эта строка закрывает окно, как вы видите. Если я прокомментирую эту строку, прогрессбар работает хорошо. 10, 20, 30, ... 100% я вижу. Но в остальном прогрессбар выглядит как 10, 20, 30, ... 90%, некоторое ожидание и закрытие окна! Я пытаюсь использовать Thread.Sleep (5000), чтобы дать индикатору прогресса время для рисования. Но даже это не помогает. Итак, как я могу увидеть последние изменения в процентах, если окно закрывается сразу после этого?

Ответы на вопрос(1)

Ваш ответ на вопрос