此类用法:BackgroundWorker 类 (System.ComponentModel) | Microsoft Docs
代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace BackGroundWork
{
public partial class Form1 : Form
{
//报此BackgroundWorker声明它不报告进度。直接将workReportsProgress为true;
public Form1()
{
InitializeComponent();
backgroundWorker1.WorkerReportsProgress = true;
}
private void button1_Click(object sender, EventArgs e)
{
progressBar1.Maximum = 10;
if (!backgroundWorker1.IsBusy)
{
backgroundWorker1.RunWorkerAsync();
}
}
//此函数调用RunWorksAsync()触发
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
Random rd = new Random();
for (int i = 0; i < 10; i++)
{
int number = rd.Next(0, 10);
backgroundWorker1.ReportProgress(i+1, number);//使用reportProgress进行数值传递 i为进度条的值 number为传递的值
Thread.Sleep(2000);
}
}
//此函数调用ReportProgress()触发
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
string str = string.Format("{0}:{1}"+"\r\n", DateTime.Now.ToString("yymmddhhmmss"), e.UserState);
textBox1.AppendText(str);
}
//此函数在当后台操作已完成、被取消或引发异常时发生。
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
progressBar1.Value = 0;
textBox1.AppendText("完成" + "\r\n");
}
}
}