.NET多线程控制进度条
.NET下C#使用多线程控制进度条
.NET下C#使用多线程控制进度条
Code
1 using System;
2 using System.ComponentModel;
3 using System.Windows.Forms;
4 namespace WinApp
5 {
6 /**////
7 /// gui 类
8 ///
9 public partial class Form1 : Form
10 {
11 public Form1()
12 {
13 InitializeComponent();
14 }
15 private void button1_Click(object sender, EventArgs e)
16 {
17 //用子线程工作
18 new System.Threading.Thread(new System.Threading.ThreadStart(StartDownload)).Start();
19 }
20 //开始下载
21 public void StartDownload()
22 {
23 Downloader downloader = new Downloader();
24 downloader.onDownLoadProgress += new Downloader.dDownloadProgress(downloader_onDownLoadProgress);
25 downloader.Start();
26 }
27 //同步更新ui
28 void downloader_onDownLoadProgress(long total, long current)
29 {
30 if (this.InvokeRequired)
31 {
32 this.Invoke(new Downloader.dDownloadProgress(downloader_onDownLoadProgress), new object[] { total, current });
33 }
34 else
35 {
36 this.progressBar1.Maximum = (int)total;
37 this.progressBar1.Value = (int)current;
38 }
39 }
40 }
41
42 /**////
43 /// 下载类
44 ///
45 public class Downloader
46 {
47 //委托
48 public delegate void dDownloadProgress(long total,long current);
49 //事件
50 public event dDownloadProgress onDownLoadProgress;
51 //开始模拟工作
52 public void Start()
53 {
54 for (int i = 0; i < 100; i++)
55 {
56 if (onDownLoadProgress != null)
57 onDownLoadProgress(100, i);
58 System.Threading.Thread.Sleep(100);
59 }
60 }
61 }
62 }
63
1 using System;
2 using System.ComponentModel;
3 using System.Windows.Forms;
4 namespace WinApp
5 {
6 /**////
7 /// gui 类
8 ///
9 public partial class Form1 : Form
10 {
11 public Form1()
12 {
13 InitializeComponent();
14 }
15 private void button1_Click(object sender, EventArgs e)
16 {
17 //用子线程工作
18 new System.Threading.Thread(new System.Threading.ThreadStart(StartDownload)).Start();
19 }
20 //开始下载
21 public void StartDownload()
22 {
23 Downloader downloader = new Downloader();
24 downloader.onDownLoadProgress += new Downloader.dDownloadProgress(downloader_onDownLoadProgress);
25 downloader.Start();
26 }
27 //同步更新ui
28 void downloader_onDownLoadProgress(long total, long current)
29 {
30 if (this.InvokeRequired)
31 {
32 this.Invoke(new Downloader.dDownloadProgress(downloader_onDownLoadProgress), new object[] { total, current });
33 }
34 else
35 {
36 this.progressBar1.Maximum = (int)total;
37 this.progressBar1.Value = (int)current;
38 }
39 }
40 }
41
42 /**////
43 /// 下载类
44 ///
45 public class Downloader
46 {
47 //委托
48 public delegate void dDownloadProgress(long total,long current);
49 //事件
50 public event dDownloadProgress onDownLoadProgress;
51 //开始模拟工作
52 public void Start()
53 {
54 for (int i = 0; i < 100; i++)
55 {
56 if (onDownLoadProgress != null)
57 onDownLoadProgress(100, i);
58 System.Threading.Thread.Sleep(100);
59 }
60 }
61 }
62 }
63