使用BackgroundWorker从具有out参数的另一个类调用方法

时间:2013-04-29 01:03:19

标签: c# backgroundworker out

在我的背景工作者中,需要调用另一个类中的方法并带有参数。

[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

1 个答案:

答案 0 :(得分:0)

您无法在未创建表单的线程上编辑/修改表单或用户控件。为此,您需要从UI线程上的DataGridView中提取所需的数据,并将其放入不是控件或表单的数据结构(例如DataTable)中(或传递给它)以后台工作者为参数)。然后在后台线程中从该数据结构中检索数据,并将其添加到数据库中。