将文件加载到流中时,Delphi HTTP App引发错误

时间:2012-03-24 17:16:21

标签: delphi delphi-xe2 httpapplication tfilestream

我一直在研究HTTP Web服务器应用程序(通过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 个答案:

答案 0 :(得分:6)

正如@ain在评论中所述 - 您在构造函数中缺少共享模式。

更改此

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

到这个

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