在C#中,可以使用IProgress<T>
接口來實現進度報告。IProgress<T>
接口定義了一個用于報告進度的對象,它包含一個Report
方法,可以用來通知進度的改變。以下是一個示例代碼:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var progress = new Progress<int>(report =>
{
Console.WriteLine($"Progress: {report}%");
});
await Task.Run(() =>
{
for (int i = 0; i <= 100; i++)
{
// 模擬耗時操作
System.Threading.Thread.Sleep(100);
// 報告進度
((IProgress<int>)progress).Report(i);
}
});
}
}
在這段代碼中,首先創建了一個Progress<int>
對象,用于報告int
類型的進度。然后在Task.Run
中執行一個耗時操作,并在循環中通過((IProgress<int>)progress).Report(i);
來報告進度。
運行以上代碼,可以看到每隔100ms打印一次進度信息。
需要注意的是,IProgress<T>
是一個泛型接口,可以根據需要自定義報告進度的數據類型。