【发布时间】:2015-02-17 23:15:23
【问题描述】:
我有一个带有 datagridview 和一些按钮的 windows 窗体。单击其中一个按钮将调用名为loadMyData() 的方法,该方法从 csv 读取一些数据并将它们放入表单中的三个数据网格视图中。
代码是这样的:
public partial class NewForm : Form
{
private void loadData_Click_1(object sender, EventArgs e) // load market data, create a base copy and update gridview
{
ThreadStart thread1Start = new ThreadStart(loadMyData);
Thread t1 = new Thread(thread1Start);
t1.Start();
}
public void loadMyData()
{
dataMap = dataLoader.newLoadTheData(dataMap, grid1, grid2)
}
}
dataLoader.newLoadTheData 是一个静态方法,它将我的 datagridviews (grid1, grid2) 和一个字典 (dataMap) 作为输入。该方法只是从 csv 中读取一些数据并将数字放入 2 个数据网格视图中。这些是从此方法更新的,并且该方法还返回更新的字典(dataMap)。当方法loadMyData() 正常执行时一切正常,但是当我将其作为线程执行时出现此错误:
跨线程操作无效:控件“grid1”从 线程不是创建它的线程。
我意识到我可能会使用“调用”之类的东西,但我真的找不到一个明确的例子来说明如何在我的情况下执行此操作。任何人都可以帮助解决tjis的情况吗?我应该如何更改代码以使其正常工作?
【问题讨论】:
标签: c# multithreading threadpool