C# DGV中的所有2个单元格都使用相同的数据进行更新。在我看来,这些线索好像混在一起了
我正在尝试在C#Winform中更新DataGridView。假设此DGV中只有2个单元C# DGV中的所有2个单元格都使用相同的数据进行更新。在我看来,这些线索好像混在一起了,c#,multithreading,winforms,datagridview,C#,Multithreading,Winforms,Datagridview,我正在尝试在C#Winform中更新DataGridView。假设此DGV中只有2个单元 public void getMarketDataForAllStocks() { Thread thread = new Thread(() => getMarketData("AAPL")); thread.IsBackground = true; thread.Start(); Thread thread2 = new Thread(() => getMa
public void getMarketDataForAllStocks()
{
Thread thread = new Thread(() => getMarketData("AAPL"));
thread.IsBackground = true;
thread.Start();
Thread thread2 = new Thread(() => getMarketData("GOOG"));
thread2.IsBackground = true;
thread2.Start();
}
getMarketData()是建立TCP连接并获取流的方法
从连接接收到流后,它将使用数据(来自流)更新DGV中的所有单元
我的问题是,DGV中的所有2个单元格都用相同的数据更新。在我看来,这些线索好像混在一起了
来自这两个线程的数据值相同的可能原因是什么?是因为我在这里创建了多个线程吗?您不应该从UI线程以外的任何线程访问DGV。作为一个UI控件,它专门设计为只能从UI线程访问。getMarketData做什么,dgv是如何/在哪里更新的?@AlexeiLevenkov不是所有控件都足够好,可以在您对它们进行变异时为您抛出该异常。例如,当您改变DGV的数据源时,它不会抛出任何异常。这并不意味着它可以工作,它只是意味着它不会告诉您(以异常的形式)它不会工作。不可能用您提供的示例说明为什么您的代码不能产生预期的结果。到目前为止,以下情况是错误的-可能从非UI线程更新UI控件,可能使用静态(或简单相同)变量存储数据…@Servy-不知道DGV这样的公共控件不会验证调用方的线程。。。事实上,这并没有改变(未显示)代码可能错误的事实。