我有一个简单的测试类:绑定ILIST到DataGridView中,DGV没有更新
public partial class TEST_CLASS
{
public string IP { get; set; }
public int PORT { get; set; }
}
iList<TEST_CLASS> MY_CLASS = new List<TEST_CLASS>();
和我有下面的代码的类DGV绑定:
TEST_CLASS n = new TEST_CLASS();
MY_CLASS.Add(n);
grid_nodes.DataSource = MY_CLASS;
Thread t = new Thread(set1);
t.Start();
Thread t2 = new Thread(set2);
t2.Start();
和线程更新该类为测试目的的随机值:
public void set1()
{
while (true)
{
Random r = new Random();
MY_CLASS[0].IP = r.Next(999900);
Thread.Sleep(100);
}
}
public void set2()
{
while (true)
{
Random r = new Random();
MY_CLASS[0].PORT = r.Next(999900);
Thread.Sleep(100);
}
}
问题是DGV没有正确更新。每次点击单元格时,我只会看到更新。
我将有成千上万的行和单独的线程更新MY_CLASS,我需要将这些更改在DGV上'实时'显示。
据我了解,我需要每次更新我的类时调用DGV.Update()?这样做的最佳方式是什么,因为我将有数千个线程不断更新课程?谢谢!
'成千上万的线程不断更新类'令人不安,你确定这个类是线程安全的吗? – 2012-04-16 13:35:03
@JoshuaDrake不知道你的意思,我想可能不是。只是一个简单的类与变量在列表中。你能指出我可以在哪里了解更多信息吗?此外,我正在寻找的只是一个简单的代码示例,它可以完成我想要完成的任务,但我似乎无法找到任何东西。这是否真的是完成任务的“后方”?谢谢 – user1015551 2012-04-16 14:24:25
关于[C#中的线程同步](http://www.albahari.com/threading/part2.aspx)和[线程安全集合](http://msdn.microsoft.com/en-us /library/dd997305.aspx)在C#中。 – 2012-04-16 14:39:01