【发布时间】:2014-01-16 19:18:55
【问题描述】:
我有办法:
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 事件。
加载数据:
...
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 因为那样你才能看到第一个结果,直到最后一个结果到达,而不是能够看到输入的结果流(并且可以呈现)
-
@CamBruce 我知道这是最好的解决方案,但我想在这种情况下如何解决它:)
-
@Servy 你有什么办法解决我的问题吗????
标签: c# datagridview backgroundworker