私は簡単なテストクラスを持っています:
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() を呼び出す必要がありますか? 何千ものスレッドがクラスを絶えず更新するので、これを行う最善の方法は何でしょうか? ありがとう!