Atualizando a interface do usuário com o BackgroundWorker no WPF

No momento, estou escrevendo um aplicativo WPF 3.5 simples que utiliza o SharePoint COM para fazer chamadas para sites do SharePoint e gerar informações de Grupo e Usuário. Como esse processo demora um pouco, quero mostrar uma ProgressBar enquanto os grupos estão sendo gerados. O processo desejado é o seguinte:

O usuário insere o URL e clica no botão para buscar dados do site.ProgressBar inicia animaçãoGrupos são gerados e nomes são adicionados a um ListViewApós a conclusão, a animação ProgressBar termina

O problema que estou encontrando é que a interface do usuário nunca é atualizada. Nem o ProgressBar ou o ListView faz alterações. Se alguém tiver alguma idéia para ajudar com o código abaixo, seria muito apreciado.

private void GetGroupsAndUsersButton_Click(object sender, RoutedEventArgs e)
{
    siteUrl = "";

    if (SiteURLTextBox.Text.Length > 0)
    {
        FetchDataProgressBar.IsIndeterminate = true;

        mWorker = new BackgroundWorker();
        mWorker.DoWork += new DoWorkEventHandler(worker_DoWork);
        mWorker.WorkerSupportsCancellation = true;
        mWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
        mWorker.RunWorkerAsync();
    }
    else
    {
        System.Windows.MessageBox.Show("Please enter a URL for the SharePoint site you wish to retrieve data");
    }
}

private void worker_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
    siteUrl = SiteURLTextBox.Text;
    GroupListView.ItemsSource = null;

    try
    {
        using (SPSite site = new SPSite(siteUrl))
        {
            SPWeb web = site.OpenWeb();
            SPGroupCollection collGroups = web.SiteGroups;
            if (GroupNames == null)
                GroupNames = new List<string>();

            foreach (SPGroup oGroup in collGroups)
            {
                GroupListView.Items.Add(new ListViewItem() { Content = oGroup.Name });
            }

            foreach (ListViewItem item in GroupListView.Items)
            {
                item.MouseLeftButtonUp += item_MouseLeftButtonUp;
            }
        }
    }
    catch (Exception ex)
    {
        System.Windows.MessageBox.Show("Unable to locate a SharePoint site at: " + siteUrl);
    }
}

private void worker_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e)
{
    FetchDataProgressBar.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal,
    new Action(
        delegate()
        {
            FetchDataProgressBar.IsIndeterminate = false;
        }
        ));
}

questionAnswers(3)

yourAnswerToTheQuestion