Delphi HTTP App ошибка при загрузке файлов в потоки - PullRequest
4 голосов
/ 24 марта 2012

Я работал над приложением HTTP Web Server (через TIdHTTPWebBrokerBridge), и у меня возникла небольшая проблема, когда дело доходит до загрузки файлов в потоки (TFileStream) для отправки клиенту.Это происходит не каждый раз, но совершенно случайно ... Я получаю исключение ...

Cannot open file "C:\SomePath\SomeFile.html". The process cannot access the file because it is being used by another process

Это происходит в этой строке:

Str:= TFileStream.Create('C:\SomePath\SomeFile.html', fmOpenRead);

(Str - TFileStream)

Я предполагаю, что сообщение говорит само за себя, но мне абсолютно необходимо его избежать.Это исключение происходит только в режиме отладки, но мне нужно отлаживать эту вещь, не беспокоясь о том, чтобы постоянно получать это сообщение.

Странно, но в большинстве случаев файл загружается и отправляется обратно в любом случае.

Как я мог избежать этого?И почему он может не позволить мне открыть его более одного раза, даже если он доступен только для чтения?

1 Ответ

6 голосов
/ 24 марта 2012

Как сказано в комментарии @ain, вам не хватает режима общего доступа в конструкторе.

Изменить это

Str:= TFileStream.Create('C:\SomePath\SomeFile.html', fmOpenRead);

к этому

Str:= TFileStream.Create('C:\SomePath\SomeFile.html', fmOpenRead or fmShareDenyNone);
...