最近做了一个 自动升级程序 在 下载文件和 解压缩文件时 用到了 进度条 今天先把 进度条的使用 记录下 改天有时间 把自动升级 程序 再记录进来
进度条 读取 离不开 线程 现在用两种方法 实现这个效果
一、用VS 里自带的Timer控件
int A =1;
private void timer1_Tick(object sender, EventArgs e) { if(A<100) { A++; progressBar1.Value = A; label1.Text = A.ToString(); } }这个比较简单 在 【开始计数】事件中 启动 Timer 但是这种方法 有局限性 不灵活 下面 我们用 线程和委托 来实现 这个效果 这种方法 比较灵活 自由度高
二、用线程和委托 实现 进度条的读取
System.Threading.Thread tt;
public delegate void SetNum(int i); private void SetText() { for (int a = 1; a <= 100; a++) { if (this.InvokeRequired) { this.Invoke(new SetNum(SetNumDo), a); } Thread.Sleep(10); } } public void SetNumDo(int i) { progressBar1.Value = i; label1.Text = i.ToString(); }声明 委托 实现委托 然后在【开始计数】事件中 开启线程 调用
tt = new Thread(() =>
{ SetText(); }); tt.IsBackground = true; tt.Start();