您的位置:首页 > 编程语言 > C#

c#中子线程控制进度条的一个简单例子

2008-05-06 08:32 666 查看
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);


}


}


}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: