OlegChernavin Привет, возникло несколько комментариев к программе:
1. В процессе закачки заметил что в списке соединений иногда появляются что-то типа: 403 Forbidden. Как я понял, файлы, для которых сервер вернул код ошибки, не были закачаны, причем судя по всему OE сдается сразу, даже не пытаясь выполнить указанное в настройках число попыток. Это плохо, т.к. в проекте на 100000 файлов вручную нереально выявить какие файлы были закачаны, а какие нет - хотелось бы чтобы программа хотя бы сообщала где-то что именно она не смогла закачать и по какой причине. Пробовал для этого включать лог, но он тут же заполняется огромным количеством информации, заметить там что-то нереально.
Вообще, хорошая качалка не должна сдаваться независимо от того какой ответ вернул сервер. К примеру, я не раз встречал сервера, которые возвращают код 404 чтобы ограничить число одновременных подключений, тогда как файл реально существует. Думаю лучший алгоритм в этом случае - выполнить указанное в настройках количество попыток, причем при каждой неудачной попытке перемещать файл в конец очереди (т.к. может конечно быть и так что сервер не врет и файла действительно нет
), ну а после того как число попыток исчерпано занести файл и причину отказа в лог, так чтобы пользователь мог наглядно увидеть что и по какой причине не было скачано.
2. Заметил такую хитрую вещь: есть несколько ссылок разного вида, все он устанавливают куку и затем возвращают код 302 Moved temporarily, при этом URL файла - один и тот же. Т.е. сервер запоминает в сессионных данных какой именно контент возвращать по этому URL. Таким образом получается что OE закачивает первую ссылку, а остальные нет, т.к. он думает что они уже закачаны раз есть файл с таким именем. Если возможно, было бы неплохо научить программу этой хитрости.
3. Заметил что иногда довольно сложно остановить проект. Т.е. сколько не давлю на кнопку Stop - счетчик файлов продолжает что-то отсчитывать. Закрываю окно - процесс остается висеть в памяти. Единственный выход - убить процесс из Task Manager.