IProgress
double PercentComplete { get; } // 获取进度(百分比)
T Current { get; } // 获取当前的进度值
void Report(T value); // 上报进度
所以,IProgress<string> 表示 string 类型的进度。它可以用于表示如下进度:
- 文件复制/下载进度,string 为文件名
- 导入数据进度,string 为表名
- 等等
一个 IProgress
public class FileCopyProgress:IProgress<string>
{
public double PercentComplete { get; private set; }
public string Current { get; private set; }
public void Report(string filename)
{
this.Current = filename;
// 计算PercentComplete...
PercentComplete = ...
}
}
使用示例:
IProgress<string> progress = new FileCopyProgress();
CopyFile("file1.txt", progress);
Console.WriteLine(progress.PercentComplete); // 输出进度
Console.WriteLine(progress.Current); // 输出当前处理的文件名
CopyFile("file2.txt", progress);
// 进度和当前文件名更新
…
对 CopyFile() 方法,我们传入 IProgress
void CopyFile(string filename, IProgress<string> progress)
{
// 开始复制文件
progress.Report(filename); // 上报文件名作为进度
// 复制文件...
progress.PercentComplete = ... // 更新进度
// 文件复制完成
progress.PercentComplete = 100;
}
那么调用方就可以通过 IProgress
Hope this helps explain the usage and purpose of the IProgress
文档更新时间: 2023-11-16 21:09 作者:admin