用c#写一个结合ProgressBar与BackgroundWorker的使用示例
时间: 2024-04-17 22:24:32 浏览: 151
当使用C#中的ProgressBar和BackgroundWorker结合使用时,可以实现在后台执行耗时操作并显示进度条的功能。以下是一个示例:
```sharp
using System;
using System.ComponentModel;
using System.Threading;
using System.Windows.Forms;
namespace ProgressBarBackgroundWorkerExample
{
public partial class MainForm : Form
{
private BackgroundWorker backgroundWorker;
public MainForm()
{
InitializeComponent();
// 初始化BackgroundWorker
backgroundWorker = new BackgroundWorker();
backgroundWorker.WorkerReportsProgress = true;
backgroundWorker.DoWork += BackgroundWorker_DoWork;
backgroundWorker.ProgressChanged += BackgroundWorker_ProgressChanged;
backgroundWorker.RunWorkerCompleted += BackgroundWorker_RunWorkerCompleted;
}
private void btnStart_Click(object sender, EventArgs e)
{
// 禁用开始按钮,防止多次点击
btnStart.Enabled = false;
// 启动后台操作
backgroundWorker.RunWorkerAsync();
}
private void BackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
// 模拟一个耗时的操作
for (int i = 0; i <= 100; i++)
{
// 执行耗时操作
// ...
// 报告进度给BackgroundWorker
backgroundWorker.ReportProgress(i);
// 等待一段时间,模拟实际操作
Thread.Sleep(50);
}
}
private void BackgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
// 更新进度条的当前值
progressBar.Value = e.ProgressPercentage;
}
private void BackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
// 后台操作完成后的处理
// ...
// 启用开始按钮
btnStart.Enabled = true;
MessageBox.Show("操作完成!");
}
}
}
```
在上述示例中,我们创建了一个Windows窗体应用程序,其中包含一个ProgressBar控件和一个开始按钮。当点击开始按钮时,后台操作会在BackgroundWorker中执行,同时通过ReportProgress方法报告进度,进度条会实时更新。当后台操作完成后,会触发RunWorkerCompleted事件进行后续处理。
请注意,以上示例仅为演示ProgressBar与BackgroundWorker的结合使用,并没有实际的耗时操作。你可以根据实际需求修改DoWork事件中的耗时操作代码。希望对你有帮助!
阅读全文