各位大哥,帮帮小女子吧,关于Timer和进度条的问题.谢谢!!!
我在一个FORM家载时候要执行一个存储过程要较长时间,并且时间不确定。要用一个弹出窗体显示一下进度,看了许多参考资料,也看了knight94(愚翁)的文章,知道用线程和委托,但写出来还是进度条不动呀,执行完了才开始动。怎么回事呀。急呀。
//-----------窗体变量----------
private frmProgressBar f = null;
private delegate void setPro(); //委托
//---------启动滚动条-----------
private void startPro()
{
// MethodInvoker mi = new MethodInvoker(this.timer1.Start);
setPro s = this.timer1.Start;
this.BeginInvoke(s);
Thread.Sleep(100);
}
private void timer1_Tick(object sender, EventArgs e)
{
f.setpro();
}
//--------进度条窗体的方法----------------
public void setpro()
{
if (progressBar1.Value < progressBar1.Maximum)
{
this.progressBar1.Value++;
}
}
//-------------------启动线程-----------------
Thread t1 = new Thread(new ThreadStart(this.startPro));
Thread t2 = new Thread(new ThreadStart(this.ExecPro));
//(ExecPro 是一个执行存储过程的方法)
t1.Start();
t2.Start();
f.Show();
------解决方案--------------------先占个沙发 美女~
------解决方案--------------------给你个例子。是timer控制进度条的
private void InvokeFun()
{
if (progressBar1.Value < 100)
{
progressBar1.Value = progressBar1.Value + 1;
}
}
//子线程入口
private void ThreadFun()