您的位置:首页 > 其它

多线程中子线程控制进度条(参阅msdn的)

2006-06-19 11:21 288 查看
private void button1_Click(object sender, System.EventArgs e)
{
flag=false;
Thread thread=new Thread(new ThreadStart(target));
thread.IsBackground=true;
thread.Start();
}
public void target()
{
try
{
MethodInvoker mi=new MethodInvoker(countPro);
while(!flag)
{
this.Invoke(mi);

Thread.Sleep(1000);
}
}
catch (ThreadInterruptedException e)
{
if (e != null) {}
}
catch (Exception we)
{
if (we != null)
{
//MessageBox.Show(we.ToString());
}
}

}
public void countPro()
{
int min;
double numerator,denominator,completed;
min=this.progressBar1.Minimum;
if(this.progressBar1.Value==this.progressBar1.Maximum)
{
this.progressBar1.Value=this.progressBar1.Minimum;
}
else
{
this.progressBar1.PerformStep();
}
//显示进度
this.textBox1.Text=this.progressBar1.Value.ToString();
numerator=this.progressBar1.Value-min;
denominator=this.progressBar1.Maximum-this.progressBar1.Minimum;
completed=(numerator/denominator)*100.0;
this.label2.Text=Math.Round(completed)+"%";
}

private void button2_Click(object sender, System.EventArgs e)
{
flag=true;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: