//查询存储过程。
public SqlCommand GetAverValueProData()
        {
 SqlConnection conn = new SqlConnection();// thread2 = Thread.CurrentThread;
conn.ConnectionString = sqlconn.sConn;
fnID= GetfnValue("Select AGWSDb.dbo.my_fn_GetNewUnderCtrlProcID(Default)");
//thread1 = new Thread(new ThreadStart());
.Open();
scmd.Connection = conn;
scmd.CommandTimeout = 30000;
scmd.CommandText = "my_proc_Rpt_Stat_RIData";
scmd.CommandType = CommandType.StoredProcedure;
scmd.Parameters.Clear();scmd.Parameters.Add(new SqlParameter("@dtBeg", SqlDbType.DateTime, 8));
scmd.Parameters.Add(new SqlParameter("@dtEnd", ype.DateTime, 8));           
 scmd.UpdatedRowSource = UpdateRowSource.Both;
scmd.Parameters["@dtBeg"].Value = this.dtPikStart.Value;
scmd.Parameters["@dtEnd"].Value = this.dtPikEnd.Value;
scmd.ExecuteNonQuery();
            return scmd;
        }//主对话框中显示数据
 thread1 = Thread.CurrentThread;
 frm = new Form1(this);
frm.Show();
threadday = new Thread(new ThreadStart(SearchThread));
threadday.Start();
///////关键是下边的。如果没有下便的。是可以显示的。
{
SqlDataAdapter da = new SqlDataAdapter(controlAver .GetAverValueProData ());
ds = new DataSet();
da.Fill(ds, "my_proc_Rpt_Stat_RIData");               
this.dataGridView1.DataSource =ds.Tables [0];    
}
////////////////////////////////////运行线程
  private delegate void ChangeCallBack();
        bool m_bSearchThread = true;
        public void SearchThread()
        {
            m_bSearchThread = true;
            if (m_bSearchThread)
                ChangeCall();
        }
        private void ChangeCall()
        {
            if (this.InvokeRequired)
            {
                ChangeCallBack callback = new ChangeCallBack(ChangeCall);
                this.Invoke(callback, new object[] { });
            }
            else
            {
            //  controlAver . GetAverValueProData();
            }
        }
        public void pause()
        {  
            controlAver .CancelProData (fnID );
            threadday.Abort();
            m_bSearchThread = false;
            frm.Close();
        }/////////////
form1 上的取消按钮
 private void btnCancelPro_Click(object sender, EventArgs e)
        {
            FRM.pause();//Mainform FRM;
            this.Close();
            this.Dispose();
        }

解决方案 »

  1.   

    在介绍一下:查询存储过程。然后填充到dataset,然后再datagridview中显示数据。但是由于数据库数据较多。要运行线程,弹出form1,其上有个取消按钮,如果点了取消按钮就停止查询,如果不安取消,让数据库继续查询,当查询完毕,form1关闭,数据显示出来。 搞了很久阿。没有作出来。谢谢各位大虾帮忙啊! 急啊!
      

  2.   

    我上边的运行后出现了 新开的form1开始不能进行操作,数据显示出来后才可以操作。
      

  3.   

    弹出form1,其上有个取消按钮,如果点了取消按钮就停止查询,如果不安取消,让数据库继续查询,当查询完毕,form1关闭,数据显示出来。 搞了很久阿。没有作出来。谢谢各位大虾帮忙啊! 急啊!用messagebox就可以了。if(MessageBox.show() == DialogResult.No) {}
      

  4.   

    http://dotnet.chinaitlab.com/ADONET/713873_2.html