【发布时间】:2015-01-07 14:12:04
【问题描述】:
我试图从 sql 查询中填充 datagridview 但它需要很长时间,我试图做的是显示 .gif “加载”同时填充网格,我使用线程但 .gif 冻结,并且如果我使用CheckForIllegalCrossThreadCalls = false;,datagridview 不会加载滚动条的行为很奇怪。这是我的代码
delegate void CambiarProgresoDelegado();
按钮点击
private void btn_busca_Click(object sender, EventArgs e)
{
pictureBox1.Visible = true;
thread= new Thread(new ThreadStart(ejecuta_sql));
thread.Start();
}
方法
private void ejecuta_sql()
{
if (this.InvokeRequired)
{
CambiarProgresoDelegado delegado = new CambiarProgresoDelegado(ejecuta_sql);
object[] parametros = new object[] { };
this.Invoke(delegado, parametros);
}
else
{
myConnection.Open();
SqlCommand sql_command2;
DataSet dt2 = new DataSet();
sql_command2 = new SqlCommand("zzhoy", myConnection);
sql_command2.CommandType = CommandType.StoredProcedure;
sql_command2.Parameters.AddWithValue("@FechaIni", dateTimePicker1.Value.ToShortDateString());
sql_command2.Parameters.AddWithValue("@FechaFin", dateTimePicker2.Value.ToShortDateString());
SqlDataAdapter da2 = new SqlDataAdapter(sql_command2);
da2.Fill(dt2, "tbl1");
grid_detalle.DataSource = dt2.Tables[0];
myConnection.Close();
pictureBox1.Visible = false;
}
.gif 文件会冻结,直到线程完成他的工作。
【问题讨论】:
标签: c# multithreading datagridview