Control 'progressBar1' acessado a partir de um segmento diferente do segmento em que foi criado na minha classe de negócios [duplicado]

Esta pergunta já tem uma resposta aqui:

Relatórios do progresso da tarefa assíncrona 1 resposta

Eu tenho um método em outra dll que obtém muitos dados (com 22k linhas), e preciso criar uma barra de progresso para o usuári

Se eu não chamar esse método de forma assíncrona, ele trava o aplicativo. Mas quando eu chamo de forma assíncrona, recebo o erroprogressBar1 Controle acessado de um thread que não seja o criado em

private void btnSend_Click(object sender, EventArgs e)
{
    string filePath = tbPath.Text;

    ETLBusiness etlBusiness = new ETLBusiness(filePath);

    Task.Run(() => etlBusiness.LoadData(progressBar1));

}

Nesse caso,backgroundWorker1.RunWorkerAsync não é assíncrono, está parando meu aplicativo em loop

private void btnSend_Click(object sender, EventArgs e)
{
    string filePath = tbPath.Text;

    ETLBusiness etlBusiness = new ETLBusiness(filePath);

    Func<ProgressBar,int> func = etlBusiness.LoadData;

    this.backgroundWorker1.RunWorkerAsync(func(progressBar1));

}

como consertou?

questionAnswers(1)

yourAnswerToTheQuestion