使用backgroundWork执行后台任务,并反应任务进度

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace backGroundWorker
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 0; i <= 100; i++)
{
Thread.Sleep(100);
if (backgroundWorker1.CancellationPending) //这里判断一下是否用户要求取消后台进行,并可以尽早退出。
{
backgroundWorker1.ReportProgress(i, String.Format("当前值是 {0},操作被用户申请中断", i));
}
backgroundWorker1.ReportProgress(i, String.Format("当前完成进度; {0}%", i));
}
}

private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
MessageBox.Show("任务完成...");
}

private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
label1.Text = e.UserState.ToString();
label1.Update();
}

private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}

private void button2_Click(object sender, EventArgs e)
{
backgroundWorker1.CancelAsync();
}

private void button3_Click(object sender, EventArgs e)
{
this.Close();
}

 


}
}

 

 

posted @ 2012-08-03 17:56  刀锋浪  阅读(310)  评论(0编辑  收藏  举报