Prática recomendada para BackGroundWorker no WinForms usando uma arquitetura MVP

Estou trabalhando em um projeto winforms. Estou implementando uma arquitetura MVP. Tenho alguns trabalhos intensivos de processamento em execução no apresentador (leitura do sistema de arquivos e execução de inserções em massa em um banco de dados). Gostaria de executar essas operações em um encadeamento em segundo plano sem bloquear a interface do usuário e atualizar os controles na minha exibição (barra de progresso e visualização de datagrid).

Devo acessar o objeto backgroundworker no meu apresentador e manipular seus eventos no apresentador, fazendo com que os manipuladores de eventos de exibição disparem eventos que o apresentador está ouvindo?

Por exemplo:

Na VISTA:

private void backgroundWorker_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e)
        {
            if (WorkerProgressChange != null)
        {
            WorkerProgressChange(this, EventArgs.Empty);
        }
    }

No apresentador:

_view.WorkerProgressChange += UpdateView;

Isso parece razoável? Alguém pode oferecer um modelo melhor?

Obrigado!

questionAnswers(2)

yourAnswerToTheQuestion