Fazendo uma atualização da barra de progresso em tempo real no wpf

Estou com problemas para fazer com que a barra de progresso mostre as atualizações em tempo real.

Este é o meu código agora

for (int i = 0; i < 100; i++)
{
     progressbar1.Value = i;
     Thread.Sleep(100);
}

Mas, por algum motivo, a barra de progresso aparece vazia quando a função é executada e nada até que a função termine de ser executada. Alguém pode me explicar como isso pode ser feito? Eu sou novo no C # / WPF, por isso não tenho 100% de certeza de como implementaria um Dispatcher em um thread diferente (como visto em algumas outras postagens) para corrigir esse problema.

Para esclarecer, meu programa possui um botão que, quando pressionado, pega o valor de uma caixa de texto e usa uma API para recuperar informações e criar rótulos com base nela. Quero que a barra de progresso seja atualizada após o processamento de cada linha de dados.

Isto é o que eu tenho agora:

private async void search(object sender, RoutedEventArgs e)
{
    var progress = new Progress<int>(value => progressbar1.Value = value);
    await Task.Run(() =>
    {
        this.Dispatcher.Invoke((Action)(() =>
        {
             some pre-processing before the actual for loop occur
             for (int i = 0; i < numberofRows; i++)
             {
                  label creation + adding
                  ((IProgress<int>)progress).Report(i);
             }
        }));
    });
}

Obrigado!

questionAnswers(3)

yourAnswerToTheQuestion