BackgroundWorker是一个在设计上允许在另一个线程上执行长时间运行的工作的类。它有一些事件和属性,允许您在后台工作进程中与UI线程进行交互。其中一个事件是ProgressChanged,该事件允许您将进度更新发送回UI线程。
例如:界面
利用ProgressBar控件和lable控件实现进度条,上代码
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Init();
}
public void Init()
{
BackgroundWorker worker = new BackgroundWorker();
worker.WorkerReportsProgress = true;
worker.DoWork += (o, a) =>
{
for (int i=0;i<=100;i++)
{
Thread.Sleep(100);
worker.ReportProgress(i);
}
};
worker.ProgressChanged += (send, a) =>
{
this.ProgressBar.Value = a.ProgressPercentage;
this.label1.Text = $"{a.ProgressPercentage}%";
};
worker.RunWorkerCompleted += (o,a)=>
{
MessageBox.Show("工作已完成");
};
worker.RunWorkerAsync();
}
}