我有一种情况,我使用ArrayList来存储文件名列表(完整文件路径).当我向数组添加同一文件的多个项目时,使用ArrayList.IndexOf查找索引(我向BackgroundWorker报告进度),它总是返回第一个项目的索引,因为它按文件名搜索.这会导致进度条出现问题,即我正在处理3个文件,完成后,条形仅为1/3满.
这是一些示例代码(我只是在这里添加项目,但在实际代码中它们是从ListBox添加的):
ArrayList list = new ArrayList();
list.Add("C:\Test\TestFile1.txt");
list.Add("C:\Test\TestFile1.txt");
list.Add("C:\Test\TestFile1.txt");
var files = list;
foreach (string file in files)
backgroundWorker1.ReportProgress(files.IndexOf(file) + 1);
Run Code Online (Sandbox Code Playgroud)
当此运行时,仅报告1"百分比"的进度,因为IndexOf每次都找到相同的文件.有没有办法解决?或者是否有人建议以另一种方式获取索引(或每个项目的任何唯一标识符)?
最简单的方法就是使用索引进行迭代:
for (int i = 0; i < list.Count; i++)
{
backgroundWorks.ReportProgress(i + 1);
// Do stuff with list[i]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
180 次 |
| 最近记录: |