private void button1_Click(object sender, System.EventArgs e)
{
//实例化一个线程,并引用线程开始执行时要调用的方法
//这个方法在线程调用start()方法时启动
barProgress = new Thread(new ThreadStart(ProgressProc)); 调用线程启动ProgressProc方法 barProgress.IsBackground = true; barProgress.Start();
button2.Enabled=true;
button1.Enabled=false;
button4.Enabled=true; }
private void ProgressProc()
{
MethodInvoker mi = new MethodInvoker(UpdateProgress);//MethodInvoker表示一个委托,该委托可以执行托管代码中声明为VOID,且不接受任何参数的任何方法。 UpdateProgress为实现该委托的方法。该方法是没有任何参数的方法 while (true)
{
Invoke(mi);
int sleepTime = this.waitTime;
Thread.Sleep(sleepTime) ;
} }
private void UpdateProgress() //实现UpdateProgress
{
double completed ;
double number;
if (progressBar1.Value == progressBar1.Maximum)
{
progressBar1.Value = progressBar1.Minimum ;
}
else
{
progressBar1.PerformStep();
}
number=this.progressBar1.Value;
completed = (number/100) * 100.0 ; completedlabel.Text = Math.Round(completed).ToString() + "%" ;
}
解决方案 »
- 【200分】C#调用C++的DLL问题
- treeview 点击已经选过的节点如何触发事件
- 为什么无法退出,页面只是刷新了一下,为什么?
- 为什么我的WEB程序执行得那么慢呀?盼高手解答,答者有分
- 邮件Subject的问题, 急在线等
- 求助:DataTable 数据处理 遇到问题。。
- ~~~~~~写Word表格前插入一行文字,马上给分!~~~~~~~~~~~~~~~~~~·
- 寻求字库编辑器帮助
- .net 2.0的程序,在搁置很长一段时间后,重新使用该程序时需要很长时间等待才响应,怎么办?
- comboBox查询后取值的问题
- 关于web.config设置问题
- C#下怎样将数据库中选择的记录生成xml文件
private void ProgressProc()
{
//实例化一个MethodInvoker委托
MethodInvoker mi = new MethodInvoker(UpdateProgress); while (true) //如果为真则循环下面的方法
{
Invoke(mi); //指定执行mi委托
int sleepTime = this.waitTime; //等待时间
Thread.Sleep(sleepTime) ; //线程等待时间
} }private void button1_Click(object sender, System.EventArgs e)
{
//实例化一个线程,并引用线程开始执行时要调用的方法
Thread barProgress = new Thread(new ThreadStart(ProgressProc)); //创建新线程调用实现委托的方法。barProgress.IsBackground = true; //后台执行barProgress.Start(); //线程开始执行button2.Enabled=true;
button1.Enabled=false;
button4.Enabled=true; } private void UpdateProgress() //MI委托的具体实现方法
{
double completed ;
double number;
if (progressBar1.Value == progressBar1.Maximum) //如果进度条为最大值时
{
progressBar1.Value = progressBar1.Minimum ; //进度条回到最小值
}
else //否则
{
progressBar1.PerformStep(); //按照PerformStep设置的VALUE继续增加
}
number=this.progressBar1.Value; //给number赋值
completed = (number/100) * 100.0 ; //因该属于进度的大小step completedlabel.Text = Math.Round(completed).ToString() + "%" ;
}
MethodInvoker mi = new MethodInvoker(UpdateProgress); while (true) //如果为真则循环下面的方法
这个true是一直都是真吗?
写这个while(true)有什么作用呢?