A barra de progresso do wpf não atualiza no último ProgressChanged

Eu fazendo algumas UI e tenho ProgressBar nele. Usando o padrão MVVM.

XAML:

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

ViewModel (simplificado):

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

Código por trás:

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

Então, é isso

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

é o problema. Essa linha fecha a janela como você vê. Se eu comentar essa linha, a barra de progresso funciona bem. 10, 20, 30, ... 100% eu vejo. Mas a barra de progresso parece 10, 20, 30, 90%, alguns esperando e fechando a janela! Eu tento usar Thread.Sleep (5000), para dar a barra de progresso algum tempo para desenhar. Mas mesmo isso não ajuda. Então, como posso ver a última mudança de perseverança se a janela fechar imediatamente depois disso?

questionAnswers(1)

yourAnswerToTheQuestion