发布网友 发布时间:2024-10-24 09:46
共1个回答
热心网友 时间:2024-11-10 23:12
给你个例子
BackgroundWorker 后台运行,显示进度
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;
namespace BackgoundWorker_Example
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// 第一步:初始化
this.backgroundWorker1.WorkerReportsProgress = true; // 显示进度
this.backgroundWorker1.WorkerSupportsCancellation = true; // 支持取消
}
// 第二步:添加后台执行方法体
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
// 设立间隔时间 相当于执行的事件
System.Threading.Thread.Sleep(100);
// 第三步:添加ReportProgress() 方法 显示进度
// 调用 ReportProgress 方法触发 ProgressChanged 事件显示进度
backgroundWorker1.ReportProgress(20);
System.Threading.Thread.Sleep(100);
backgroundWorker1.ReportProgress(40);
System.Threading.Thread.Sleep(100);
backgroundWorker1.ReportProgress(60);
System.Threading.Thread.Sleep(1000);
backgroundWorker1.ReportProgress(80);
System.Threading.Thread.Sleep(100);
backgroundWorker1.ReportProgress(100);
}
private void button1_Click(object sender, EventArgs e)
{
// 第五步:开始后台执行
this.backgroundWorker1.RunWorkerAsync();
}
private void button2_Click(object sender, EventArgs e)
{
// 第六步:停止执行后台代码
this.backgroundWorker1.CancelAsync();
}
// 第四步:添加进度改变事件
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
// 显示进度 获得当前进度
this.progressBar1.Value = e.ProgressPercentage;
}
}
}