1

在我的后台工作人员中,它需要调用另一个带有 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

4

1 回答 1

0

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

于 2013-04-29T01:52:31.293 回答