首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

高分求解 ,对于线程,代理 ,弹出一form,终止数据库的查询

2011-12-22 
高分求解 ,关于线程,代理 ,弹出一form,终止数据库的查询。//查询存储过程。publicSqlCommandGetAverValuePro

高分求解 ,关于线程,代理 ,弹出一form,终止数据库的查询。
//查询存储过程。
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();
                }

[解决办法]
进来学习 多线程不是很会
惭愧 等待下一个高手的到来
[解决办法]
弹出form1,其上有个取消按钮,如果点了取消按钮就停止查询,如果不安取消,让数据库继续查询,当查询完毕,form1关闭,数据显示出来。 搞了很久阿。没有作出来。谢谢各位大虾帮忙啊! 急啊!

用messagebox就可以了。

if(MessageBox.show() == DialogResult.No) {}
[解决办法]
建议这种情况不要用多线程,用数据对象的异步执行更好。
[解决办法]
http://dotnet.chinaitlab.com/ADONET/713873_2.html

热点排行