Control 'progressBar1' доступен из потока, отличного от потока, в котором он был создан в моем бизнес-классе [duplicate]

На этот вопрос уже есть ответ:

Отчет о выполнении асинхронной задачи 1 ответ

У меня есть метод в другой DLL, который получает много данных (блокирует 22k строк), и мне нужно создать индикатор выполнения для пользователя.

Если я не вызываю этот метод асинхронно, приложение зависает. Но когда я вызываю это асинхронно, я получаю ошибкprogressBar1 Доступ к элементу управления из потока, отличного от потока, в котором он был создан

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

    ETLBusiness etlBusiness = new ETLBusiness(filePath);

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

}

В таком случае,backgroundWorker1.RunWorkerAsync не асинхронный, он останавливает мое приложение в цикле

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

}

как это исправить?

Ответы на вопрос(1)

Ваш ответ на вопрос