Control 'progresoBar1' accedido desde un hilo diferente al hilo en el que se creó en mi clase de negocios [duplicado]

Esta pregunta ya tiene una respuesta aquí:

Reporte de progreso de la tarea asincrónica 1 respuesta

Tengo un método en otro archivo dll que obtiene una gran cantidad de datos (cortando 22k filas), y necesito crear una barra de progreso para el usuario.

Si no llamo a este método de forma asincrónica, se bloquea la aplicación. Pero cuando lo llamo asincrónicamente me sale el errorprogressBar1 Control accedido desde un hilo distinto del hilo en el que se creó

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

    ETLBusiness etlBusiness = new ETLBusiness(filePath);

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

}

En ese caso,backgroundWorker1.RunWorkerAsync no es asíncrono, está deteniendo mi aplicación en bucle

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

}

¿Cómo lo arregló?

Respuestas a la pregunta(1)

Su respuesta a la pregunta