public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.StatusBar statusBar1;
private System.Windows.Forms.Timer timer1;
private System.Windows.Forms.ProgressBar probar;
private System.ComponentModel.IContainer components;
private int total_rownum = 0 ;
private int detail = 0;
private int flag = 0 ;
public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent(); }
[STAThread]
static void Main()
{
Application.Run(new Form1());
} private void Form1_Load(object sender, System.EventArgs e)
{
Thread thread_detil = new Thread(new ThreadStart(Detail));
thread_detil.Start(); Thread thread_total = new Thread(new ThreadStart( Total_Row));
thread_total.Start(); this.timer1.Stop();
Total_Row();
int num = total_rownum;
if(flag == 1)
{ timer1.Start();
} } private void timer1_Tick(object sender, System.EventArgs e)
{
this.probar.Maximum = total_rownum;
Detail();
if(detail>this.probar.Maximum)
{
detail = 0;
}
else
{
this.probar.Value = detail;
}
} public void Total_Row()
{
int total_rownum0=0 ;
SqlConnection sqlconn = new SqlConnection(strconn);
string sql_name = "select name from sysobjects where name like 'ZData_Info_%'";
SqlDataAdapter adp_name = new SqlDataAdapter(sql_name,sqlconn);
DataSet ds_name = new DataSet();
adp_name.Fill(ds_name);
DataView dv_name = ds_name.Tables[0].DefaultView;
for(int i=0;i<dv_name.Count;i++)
{
string lsobject = dv_name[i]["name"].ToString().Trim();
string sql_sub = "select count(*) from "+lsobject+" ";
SqlDataAdapter adp_sub = new SqlDataAdapter(sql_sub,sqlconn);
DataSet ds_sub = new DataSet();
adp_sub.Fill(ds_sub);
DataView dv_sub = ds_sub.Tables[0].DefaultView;
total_rownum0 += int.Parse(dv_sub[0][0].ToString());
}
total_rownum = total_rownum0 ;
flag = 1; } public void Detail()
{
SqlConnection sqlconn = new SqlConnection(strconn);
string sql_name = "select name from sysobjects where name like 'ZData_Info_%'";
SqlDataAdapter adp_name = new SqlDataAdapter(sql_name,sqlconn);
DataSet ds_name = new DataSet();
adp_name.Fill(ds_name);
DataView dv_name = ds_name.Tables[0].DefaultView;
for(int i=0;i<dv_name.Count;i++)
{
string lsobject = dv_name[i]["name"].ToString().Trim();
string sql_sub = "select * from "+lsobject+" ";
SqlDataAdapter adp_sub = new SqlDataAdapter(sql_sub,sqlconn);
DataSet ds_sub = new DataSet();
adp_sub.Fill(ds_sub);
DataView dv_sub = ds_sub.Tables[0].DefaultView;
for(int j =0;j<dv_sub.Count;j++)
{
detail++;
}
}
}可是进度条总是到最后一下出现完,也就是说全局变量 detail 每次刷新的时候都取不到,直到函数Detail()执行完,不知道怎么解决,请高手们请教.
{
private System.Windows.Forms.StatusBar statusBar1;
private System.Windows.Forms.Timer timer1;
private System.Windows.Forms.ProgressBar probar;
private System.ComponentModel.IContainer components;
private int total_rownum = 0 ;
private int detail = 0;
private int flag = 0 ;
public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent(); }
[STAThread]
static void Main()
{
Application.Run(new Form1());
} private void Form1_Load(object sender, System.EventArgs e)
{
Thread thread_detil = new Thread(new ThreadStart(Detail));
thread_detil.Start(); Thread thread_total = new Thread(new ThreadStart( Total_Row));
thread_total.Start(); this.timer1.Stop();
Total_Row();
int num = total_rownum;
if(flag == 1)
{ timer1.Start();
} } private void timer1_Tick(object sender, System.EventArgs e)
{
this.probar.Maximum = total_rownum;
Detail();
if(detail>this.probar.Maximum)
{
detail = 0;
}
else
{
this.probar.Value = detail;
}
} public void Total_Row()
{
int total_rownum0=0 ;
SqlConnection sqlconn = new SqlConnection(strconn);
string sql_name = "select name from sysobjects where name like 'ZData_Info_%'";
SqlDataAdapter adp_name = new SqlDataAdapter(sql_name,sqlconn);
DataSet ds_name = new DataSet();
adp_name.Fill(ds_name);
DataView dv_name = ds_name.Tables[0].DefaultView;
for(int i=0;i<dv_name.Count;i++)
{
string lsobject = dv_name[i]["name"].ToString().Trim();
string sql_sub = "select count(*) from "+lsobject+" ";
SqlDataAdapter adp_sub = new SqlDataAdapter(sql_sub,sqlconn);
DataSet ds_sub = new DataSet();
adp_sub.Fill(ds_sub);
DataView dv_sub = ds_sub.Tables[0].DefaultView;
total_rownum0 += int.Parse(dv_sub[0][0].ToString());
}
total_rownum = total_rownum0 ;
flag = 1; } public void Detail()
{
SqlConnection sqlconn = new SqlConnection(strconn);
string sql_name = "select name from sysobjects where name like 'ZData_Info_%'";
SqlDataAdapter adp_name = new SqlDataAdapter(sql_name,sqlconn);
DataSet ds_name = new DataSet();
adp_name.Fill(ds_name);
DataView dv_name = ds_name.Tables[0].DefaultView;
for(int i=0;i<dv_name.Count;i++)
{
string lsobject = dv_name[i]["name"].ToString().Trim();
string sql_sub = "select * from "+lsobject+" ";
SqlDataAdapter adp_sub = new SqlDataAdapter(sql_sub,sqlconn);
DataSet ds_sub = new DataSet();
adp_sub.Fill(ds_sub);
DataView dv_sub = ds_sub.Tables[0].DefaultView;
for(int j =0;j<dv_sub.Count;j++)
{
detail++;
}
}
}可是进度条总是到最后一下出现完,也就是说全局变量 detail 每次刷新的时候都取不到,直到函数Detail()执行完,不知道怎么解决,请高手们请教.
解决方案 »
- 来大大求解对数据库操作的疑问
- c# 如何在Dictionary 里保存 类 的引用 ?
- 请教大家一个c#画图的问题
- comboBox 怎么根据指定的数据选定 (WinForm下面)
- 好几个帖子都没人回,再发正则高手请进。
- 请问在winform中,在父窗口中打开一个子窗口,在子窗口中输入数据保存之后,如何更新父窗口的datagrid?在线等,急呀!
- 报表怪问题,急救
- 粘贴问题
- 怎样取得汉字的拼音首码
- 在C#中如何用代码改变水晶报表中的某一个标题或文本?急啊
- 怎样把页面的cache禁止掉!!!!
- 我用DataReader取数据,结果,总是出错:与数据表里面的关键字重复。我又没有修改,我只是要比较一下而已阿?
ms-help://MS.MSDNQTR.2003FEB.2052/cpguide/html/cpovrasynchronousdelegates.htm
同步请用lock()
ms-help://MS.MSDNQTR.2003FEB.2052/cpguide/html/cpovrasynchronousdelegates.htm
怎么打开的?
when you read a record Increment the ProcessBar's Value