在我的背景工作者中,需要调用另一个类中的方法并带有参数。
[1级]
public partial Class1 : Form
{
private void bw_DoWork(object sender, DoWorkEventArgs e)
{
DataGridView gv;
int param1, param2;
Class2 class2 = new Class2();
class2.method(gv, out param1, out param2);
}
}
[第2类]
public Class2
{
public void method(DataGridView gv, out int param1, out int param2)
{
param1 = 0;
param2 = 0;
// basically grab the data in dataGridView and load into database
}
}
如何在没有错误Class2.method
的情况下正确拨打Cross-thread operation not valid: 'class2' accessed from a thread other than the thread it was created
?
答案 0 :(得分:0)
您无法在未创建表单的线程上编辑/修改表单或用户控件。为此,您需要从UI线程上的DataGridView中提取所需的数据,并将其放入不是控件或表单的数据结构(例如DataTable)中(或传递给它)以后台工作者为参数)。然后在后台线程中从该数据结构中检索数据,并将其添加到数据库中。