У меня есть метод:backgroundWorker.ProgressChanged событие срабатывает слишком быстро
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
if (!backgroundWorker1.CancellationPending)
{
Ctransakcja obj = (Ctransakcja)e.UserState;
string[] row = new string[] { obj.id.ToString(), obj.tytul, obj.kwota, obj.nrkonta,obj.bank };
dataGridView2.Rows.Add(row);
}
}
этот метод добавляет строки в DataGridView. в событии dowork фонового рабочего я вызываю метод LoadData, который подключается к базе данных и запускает событие ReportProgress.
LoadData:
...
while (reader.Read())
{
obj.id = int.Parse(reader[0].ToString());
obj.tytul = reader[1].ToString();
obj.kwota = reader[2].ToString();
obj.nrkonta = reader[3].ToString();
obj.bank = reader[4].ToString();
//dodanie danych itd
backgroundWorker1.ReportProgress(i, obj);
i++;
// Thread.Sleep(100);
}
...
Все работает с Thread.Sleep(100)
, но без даты сна в DataGridView смешиваются и воспроизводятся. Мне нужна функция WAIT, чтобы проверить, что строка добавлена, и вызвать следующий прогресс отчета в следующей строке из базы данных.
благодаря
@CamBruce Потому что тогда вы не можете увидеть первый результат, пока последний результат не пришел, вместо того, чтобы быть в состоянии увидеть результаты поток, как они приходят в (и может быть оказано) – Servy
@CamBruce я знаю, что это лучшее решение, но я думаю, как решить его в этой ситуации я получил :) –
@Servy у вас есть идея решить мою проблему ???? –