BackgroundWorker类在.NET Framework中提供了一种方便的机制来报告进度。在BackgroundWorker对象上调用ReportProgress方法可以报告进度,并在ProgressChanged事件处理程序中处理这些进度报告。
以下是使用BackgroundWorker的进度报告机制的示例代码:
using System;
using System.ComponentModel;
class Program
{
static void Main()
{
BackgroundWorker worker = new BackgroundWorker();
worker.WorkerReportsProgress = true;
worker.ProgressChanged += Worker_ProgressChanged;
worker.DoWork += (sender, e) =>
{
for (int i = 0; i < 100; i++)
{
// 模拟耗时操作
System.Threading.Thread.Sleep(100);
// 报告进度
worker.ReportProgress(i);
}
};
worker.RunWorkerAsync();
}
static void Worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
Console.WriteLine("Progress: " + e.ProgressPercentage + "%");
}
}
在上面的示例中,我们创建了一个BackgroundWorker对象,并设置WorkerReportsProgress属性为true,以便能够报告进度。然后我们在DoWork事件处理程序中模拟一个耗时操作,并使用ReportProgress方法报告进度。在ProgressChanged事件处理程序中,我们处理进度报告并输出进度信息。
通过这种方式,我们可以在后台执行任务的同时报告进度,并在前台更新UI或执行其他操作。