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 + "%");
}
}
在上面的示例中,我們創(chuàng)建了一個BackgroundWorker對象,并設置WorkerReportsProgress屬性為true,以便能夠報告進度。然后我們在DoWork事件處理程序中模擬一個耗時操作,并使用ReportProgress方法報告進度。在ProgressChanged事件處理程序中,我們處理進度報告并輸出進度信息。
通過這種方式,我們可以在后臺執(zhí)行任務的同時報告進度,并在前臺更新UI或執(zhí)行其他操作。