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));
}
как это исправить?