Я загружаю данные из моей таблицы данных в таблицу данных моего приложения.
При этом я хочу проинформировать пользователя о том, что приложение все еще работает через вторую форму, где индикатор выполнения показывает его прогресс, и метку, которая содержит информацию о том, сколько строк уже загружено в сетку данных.
Я знаю, что загрузка данных в приложение приведет к зависанию моего графического интерфейса, поэтому я решил использовать вторую форму, где я вызываю ее из своей основной задачи.
Я звоню
Task task = new Task(LeftJoinTables);
task.Start();
тогда в LeftJoinTables
я запусту этот код
...
foreach(DataRow rows in FileJoinMail.Rows)
{
wfrm.UpdateProgressBar(++i);
dataGridView1.Rows.Add(
false, //Checkbox
rows["Fullpath"],
rows["Filename"],
rows["File Size"],
rows["UserID"],
rows["E-Mail"],
rows["Date"]);
wfrm.ProcInfo($@"Loading Data [{i.ToString()}/{count.ToString()}]");
}
В моем втором классе формы я получил этот метод, который вызывает Waitform, которая обновляет индикатор выполнения и метку с информацией
public void ProcInfo(string message)
{
this.Invoke((MethodInvoker)delegate
{
ProcInfoLabel.Text = message;
});
}
public void UpdateProgressBar(int value)
{
this.Invoke((MethodInvoker)delegate
{
ProcBar.Value = value;
});
}
Но с этого момента я получил конфликт между потоками .. Я думал, что использование invoke решит это ..