using System;
using System.ComponentModel;
using System.Windows.Forms; namespace WindowsApplication4 { /// <summary> /// gui 类 /// </summary> public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { //用子线程工作 new System.Threading.Thread(new System.Threading.ThreadStart(StartDownload)).Start(); } //开始下载 public void StartDownload() { Downloader downloader = new Downloader(); downloader.onDownLoadProgress += new Downloader.dDownloadProgress(downloader_onDownLoadProgress); downloader.Start(); } //同步更新ui void downloader_onDownLoadProgress(long total, long current) { if (this.InvokeRequired) { this.Invoke(new Downloader.dDownloadProgress(downloader_onDownLoadProgress), new object[] { total, current }); } else { this.progressBar1.Maximum = (int)total; this.progressBar1.Value = (int)current; } } } /// <summary> /// 下载类 /// </summary> public class Downloader { //委托 public delegate void dDownloadProgress(long total,long current); //事件 public event dDownloadProgress onDownLoadProgress; //开始模拟工作 public void Start() { for (int i = 0; i < 100; i++) { if (onDownLoadProgress != null) onDownLoadProgress(100, i); System.Threading.Thread.Sleep(100); } } }