BackgroundWroker使用方法备忘
2011-08-19 00:18
288 查看
using System; using System.ComponentModel; using System.Windows.Forms; using System.Threading; namespace WindowsFormsApplication1 { publicpartialclass Form1 : Form { public Form1() { InitializeComponent(); worker =new BackgroundWorker(); worker.DoWork+=new DoWorkEventHandler(worker_DoWork); worker.ProgressChanged+=new ProgressChangedEventHandler(worker_ProgressChanged); worker.RunWorkerCompleted+=new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted); worker.WorkerReportsProgress =true; //允许进度显示 worker.WorkerSupportsCancellation =true; //允许运行中取消 } BackgroundWorker worker; privatevoid Form1_Load(object sender, EventArgs e) { } privatevoid worker_DoWork(object sender, DoWorkEventArgs e) { for (int i =0; i <300; i++) { Thread.Sleep(100); //每隔一段时间就向主线程报告进度,以便更新进度条。 //多数情况下,你只需要发送一个整数去更新即可 worker.ReportProgress(i/3); if (worker.CancellationPending) { //如果任务被取消 e.Cancel =true; worker.ReportProgress(0); return; } } } privatevoid worker_ProgressChanged(object sender, ProgressChangedEventArgs e) { pbarThis.Value = e.ProgressPercentage; lblText.Text ="已经处理了 "+ pbarThis.Value.ToString() +"%"; } privatevoid worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (e.Cancelled) { lblText.Text ="任务取消"; } elseif (e.Error !=null) { lblText.Text ="发生错误"; } else { lblText.Text ="任务完成"; } btnStart.Enabled =true; btnCancel.Enabled =false; } privatevoid btnStart_Click(object sender, EventArgs e) { btnStart.Enabled =false; btnCancel.Enabled =true; //通知主线程开始进行数据处理 worker.RunWorkerAsync(); } privatevoid btnCancel_Click(object sender, EventArgs e) { if (worker.IsBusy) { worker.CancelAsync(); } } } }
相关文章推荐
- net 2.0下的asp.net ajax基本使用方法 (备忘)
- 匿名方法的一些使用方法备忘
- gensim的使用方法(备忘)
- 匿名方法的一些使用方法备忘
- linux-Vi使用方法(备忘)
- git使用问题-解决方法 备忘
- elasticsearch API使用方法备忘(Python)
- 【备忘】python2和python3同时安装使用的方法
- git使用方法备忘
- XML和XPath使用方法备忘
- git的基本使用方法(备忘)
- cocos2dx 帧动画使用方法备忘
- IRSplit使用方法备忘
- js tooltip之wz_tooltip使用方法和参数备忘
- net 2.0下的asp.net ajax基本使用方法 (备忘)
- [备忘]使用Outlook 2010,拖拽大于20M附件发生“附件大小超过了允许的范围”提示的解决方法
- 在Android源码环境下编译系统App使用第三方jar包的方法(备忘)
- net 2.0下的asp.net ajax基本使用方法 (备忘)
- tar、gzip、unzip命令的详细使用方法备忘
- tar、gzip、unzip命令的详细使用方法备忘