У меня есть процедура bool IsExistImage(int i) . задача процедуры обнаружить изображение и вернуть логическое значение независимо от того, существует оно или нет.
у меня есть PDF-файл из более чем 100 страниц, который я разделяю и отправляю только имя файла с помощью метода. имена файлов на самом деле являются номером страницы основного файла PDF. как 1,2,3,...,125,..
после обнаружения изображения мой метод правильно сохраняет список страниц. Для этого я использовал этот код:
ArrayList array1 = new ArrayList();
for(int i=1;i<pdf.length;i++)
{
if(isExistImage(i))
{
array1.add(i);
}
}
Этот процесс выполняется более 1 часа (очевидно, для внутренних работ в методе isExistImage()). Я могу заверить вас, что ни один объект/переменная не является глобальным за пределами области действия метода.
Итак, чтобы сократить время, я использовал цикл Task.Parallel For. вот что я сделал:
System.Threading.Tasks,Parallel.For(1,pdf.Length,i =>
{
if(isExistImage(i))
array1.Add(i);
}
Но это не работает должным образом. Иногда обнаружение изображения правильное. Но чаще всего это неправильно. Когда я использую непараллельный цикл for, это всегда правильно.
Я не понимаю, в чем здесь проблема. что я должен применить здесь. Есть ли какая-то техника, которую я упускаю?
isExistImage
? Вы должны использоватьList<int>
вместоArrayList
. - person Johnbot   schedule 16.12.2013