我有一个运行数据库的每个循环来检查已标记转换的文件。目前,我有以下代码:对于每个具有动态列表?
/* All files flagged for invidual conversion will be stored in here. */
ArrayList files = vc.getFilesForInvidualConversion();
foreach (FileInfoExtended file in files)
{
// As long as the status flag hasn't been changed it can continue.
if (abort == false)
{
if (vc.isFileInUse(file) == false)
{
// Converting the video file.
vc.convertVideoToFLV(file);
}
}
vc.getFilesForInvidualConversion();
}
在第一行,你可以看到我填写一个ArrayList与它会与每一个贯穿对象。但是,在列表中的每个文件之后,我想检查是否需要转换的可能的新文件。当我再次填充ArrayList时,它们似乎没有注意到,它会继续处理从第一行代码接收到的原始文件。我宁愿要它更新“文件”-ArrayList,以便它可以转换新文件。
这可能吗?
编辑:你给这个场景的所有工作,但我想补充一些东西。是否有可能在循环中从列表中删除文件?为了这样做,它不会转换那个?
编辑2:这是我现在有:
List<FileInfoExtended> files = vc.getFilesForInvidualConversion();
while (files.Count > 0)
{
if (abort == false)
{
if (vc.isFileInUse(files[0]))
{
vc.convertVideoToFLV(files[0]);
}
}
files = vc.getFilesForInvidualConversion();
}
而且它在这两种情况下(当文件被添加到列表中,当一个文件被从列表中删除)的作品。我不知道性能是否是一个好的解决方案,但现在它适合我的需求。除非我忽略了一些问题?
如有任何意见,将不胜感激! 亲切的问候, Floris
尝试使用而不是foreach。 foreach依靠收藏在其生活中不会改变。 – 2011-05-25 17:43:41
我不知道,这清除了很多东西!感谢您的信息。 – 2011-05-25 18:15:19
这应该工作得很好。 – 2011-05-26 17:17:03