PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Обработка ошибок чтения файла


Обработка ошибок чтения файла

Сообщений 1 страница 2 из 2

1

есть такой тестовый код - читает файл кусками в память

Код:
 While Count<LOF1
  FileSeek(nFile,Count)
  nReaded=ReadData(nFile,*Buffer1,KSize)
  Count+nReaded
  ...
  If lWorkThreadStop ;прервать проверку
     Break
  EndIf

 Wend

при попадании на нечитаемый участок файла на CD
зависает и не реагирует на попытки останова программы.
При закрытии окна - окно закрывается но программа остается в памяти.
Попытки снять из диспетчера задач не срабатывают.
Только после того как принудительно выйдет лоток с диском программа выпадает на ошибку "нет диска".

Как организовать обработку нечитаемого участка?
Хотя бы неподвисание и выход из процедуры.

0

2

Рапорт о решении проблемы.

После чтения доков и консультации на других форумах был использован дополнительный режим открытия файла #FILE_FLAG_NO_BUFFERING.

Что в режиме синхронного чтения сократило время реакции на битый участок файла до ~ 27 сек.

В режиме асинхронного чтения по использованному мною алгоритму - до любого заданного времени (я задал 5сек) + время отработки CanceIO_() ~20сек

Т.е. время ожидания завершения операции чтения битого участка файла примерно одинаково для рассмотренных вариантов алгоритма.

И значительно лучше изначального варианта (8 мин).

Если нужен код - пиши'те.

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Обработка ошибок чтения файла