У меня есть для каждого цикла, который проходит через базу данных, чтобы проверить файлы, которые были помечены для преобразования. В настоящее время у меня есть следующий код:
/* 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, каждый из них, кажется, не замечает, он продолжает работать с исходными файлами, полученными из первой строки кода. Я бы предпочел, чтобы он обновил «files» -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