溫馨提示×

backgroundworker的進度報告機制

小樊
83
2024-07-03 00:11:15
欄目: 編程語言

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í)行其他操作。

0