读书人

,帮帮小女子吧关于Timer和进度条的有

发布时间: 2012-01-12 22:11:58 作者: rapoo

各位大哥,帮帮小女子吧,关于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()


{
MethodInvoker mi = new MethodInvoker(this.InvokeFun);
for (int i = 0; i < 100; i++)
{
this.BeginInvoke(mi);
//Thread.Sleep(100);
}
}

private void button1_Click(object sender, EventArgs e)
{
Thread thdProcess = new Thread(new ThreadStart(ThreadFun));
thdProcess.Start();
}

读书人网 >C#

热点推荐