我做的是这样一个功能:在别的服务器查询数据,在本机插入数据,怎么用线程来同步呢?假如用一个线程的话,数据量很大,程序会为响应,我纠结了很久了的, 看来女生思维还是不太。求求各位帮帮忙,谢谢啦,最好是有相关代码。

解决方案 »

  1.   

    this.Invoke((new Action(() => { //你对控件的操作。 })));
      

  2.   

    c/s项目在大数据量处理的时候肯定会未响应
    我不是太明白你要查什么我贴一点代码
    Thread selectThread = new Thread(()=>{
         //为页面提示正在查询请稍后
         //大数据量查询
         //查询后绑定控件(同样耗时)
         //取消页面提示
    });
    selectThread.Start();
    //我之前做过一个项目就是cs总是卡掉  现在换成WebForm做了
      

  3.   

    不单单是查询,是从服务器查询处理的数据,插入到本地数据库中。
      string sqlto = " select t1.* from idbs3.st_pptn_r@IDBS341 t1,idbs3.st_stbprp_b@IDBS341 t2 where locality='福建水文' and t1.stcd=t2.stcd and t1.drp is not null" +
                " and t1.tm>(CASE WHEN (select max(tm) from dbo.st_pptn_r where stcd=t1.stcd) is null then to_date('2010-01-01','yyyy-mm-dd') " +
                " ELSE (select max(tm) from dbo.st_pptn_r where stcd=t1.stcd) END) ";
                DataTable dt = OracleDB.GetDataSet(sqlto);
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    try
                    {
                        int numHours = int.Parse(dt.Rows[i]["INTV"].ToString().Trim());
                        //if (numHours > 1)
                        //{
                        float drpH = float.Parse(past(dt.Rows[i]["drp"].ToString().Trim())) / numHours;
                        for (int j = 0; j < numHours; j++)
                        {
                            sqlto = "insert into dbo.st_pptn_r(stcd,tm,drp,intv,pdr,dyp,wth) values(" +
                        "'" + dt.Rows[i]["stcd"].ToString() + "',to_date('" + DateTime.Parse(dt.Rows[i]["tm"].ToString()).AddHours(-j) + "','yyyy-mm-dd hh24:mi:ss')," +
                        "" + drpH.ToString("f1") + ",1," + ISpast(dt.Rows[i]["pdr"].ToString()) + "," + ISpast(dt.Rows[i]["dyp"].ToString()) + ",'" + dt.Rows[i]["wth"].ToString() + "')";
                            OracleDB.ExecuteCommand(sqlto);
                        }
                        //}
                    }
      

  4.   

    在你的循环迭代语句中插入一句Thread.Sleep(1)for (int i = 0; i < dt.Rows.Count; i++)
    {
         //执行代码                Thread.Sleep(1);
      

  5.   

    大数据量读取,不要用DataTable,用DataTableReader