winform线程问题 我做的是这样一个功能:在别的服务器查询数据,在本机插入数据,怎么用线程来同步呢?假如用一个线程的话,数据量很大,程序会为响应,我纠结了很久了的, 看来女生思维还是不太。求求各位帮帮忙,谢谢啦,最好是有相关代码。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 this.Invoke((new Action(() => { //你对控件的操作。 }))); c/s项目在大数据量处理的时候肯定会未响应我不是太明白你要查什么我贴一点代码Thread selectThread = new Thread(()=>{ //为页面提示正在查询请稍后 //大数据量查询 //查询后绑定控件(同样耗时) //取消页面提示});selectThread.Start();//我之前做过一个项目就是cs总是卡掉 现在换成WebForm做了 不单单是查询,是从服务器查询处理的数据,插入到本地数据库中。 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); } //} } 在你的循环迭代语句中插入一句Thread.Sleep(1)for (int i = 0; i < dt.Rows.Count; i++){ //执行代码 Thread.Sleep(1);} 大数据量读取,不要用DataTable,用DataTableReader DataGrid重载问题 asp.net sql2005 数据格式化输出 “基256至基900的转换”是什么意思? winfirm中重新给Label赋值,当前位置会改变 提问提问---不调试,写出此程序段的输出 页面类获取并设置前台ASPX文件中控件的问题 判断程序,只能开一次。 listview能否实现分页显示数据? 第一天学web service的问题 怎样声明一个长度可变的string数组,并向数组中添加和删除值 问个从右往走的问题 正则表达式解析
我不是太明白你要查什么我贴一点代码
Thread selectThread = new Thread(()=>{
//为页面提示正在查询请稍后
//大数据量查询
//查询后绑定控件(同样耗时)
//取消页面提示
});
selectThread.Start();
//我之前做过一个项目就是cs总是卡掉 现在换成WebForm做了
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);
}
//}
}
{
//执行代码 Thread.Sleep(1);
}