【发布时间】:2015-08-16 12:45:20
【问题描述】:
我有一个 Winforms GUI 应用程序。我有一个名为FinishedTests_Loops_DGV 的简单类列表。此列表正在添加到不同的线程(计时器线程)中。将新类添加到列表后(在计时器线程内),我调用 updateLoopsDGV() 调用 DataGridView 并更新它:
public void updateLoopsDGV()
{
if (DGV_Loops.InvokeRequired)
{
DGV_Loops.BeginInvoke((MethodInvoker)delegate()
{
DGV_Loops.DataSource = FinishedTests_Loops_DGV;
});
}
}
这只工作一次,这意味着一旦将第一个元素添加到列表中,我会看到第一行出现在 DataGridView 中,但是对 updateLoopsDGV() 的任何进一步调用都不会添加行到DataGridView。我在调试器中检查了我的列表,例如 4 个元素长,并且调用了函数,但我仍然只看到 DataGridView 中的 1 行。
即使我尝试通过按下某个按钮(在 GUI 线程中)来更新 DataGridView:
private void button3_Click(object sender, EventArgs e)
{
DGV_Loops.DataSource = FinishedTests_Loops_DGV;
}
还是不行。我做错了什么?
【问题讨论】:
-
你能显示一些
FinishedTests_Loops_DGV变量的代码吗?
标签: c# multithreading winforms data-binding datagridview