将数据加载到线程内的gridview中

时间:2013-11-28 11:59:42

标签: c# multithreading datagrid process dataset

我最近需要在一个线程中将数据加载到gridview中,问题是当我尝试将内容移动到它时,我得到一个错误,说不可能,在网上搜索我找到了一些解决方案ThreadHelperClass没有更多的成功,如果他们可以帮助我,可以欣赏,谢谢你。

以下代码:

 trediExecucao = new Thread(new ThreadStart(delegate
                {
                    conn.Open();
                    SqlDataAdapter adapter = new SqlDataAdapter();
                    adapter.SelectCommand = cmd;

                    dataSet = new DataSet();
                    adapter.Fill(dataSet);

                    conn.Dispose();
                    cmd.Dispose();
                    adapter.Dispose();
                    if (dataSet != null && dataSet.Tables != null && dataSet.Tables[0] != null)
                    {
                        dt1.DataSource = dataSet;
                        linhas = dataSet.Tables[0].Rows.Count.ToString();
                        dt1.DataMember = dataSet.Tables[0].TableName;

                        dataSet.Dispose();
                    } 
                    btnExecutar.Image = pictureBox1.Image;
                    rodando = false;
                }));

                trediExecucao.Start();

1 个答案:

答案 0 :(得分:0)

是否必须在线程中?

我这样做

try
                {
                    using (cn)
                    using (OdbcDataAdapter dadapter = new OdbcDataAdapter(globals.dgsql, cn))
                    {
                        DataTable table = new DataTable();
                        dadapter.Fill(table);

                        this.MY_DataGridView.DataSource = table;
                        connection.exitcon();
                    }
                }

                catch (OdbcException o)
                {
                    MessageBox.Show(o.ToString(), "Error");
                    return;
                }
        }

其中cn是我的连接类,而dgsql是用于将结果返回给MY_DataGridView的sql