Delphi HTTP应用程序在将文件加载到流中时引发错误



我一直在开发HTTP Web服务器应用程序(通过TIdHTTPWebBrokerBridge),在将文件加载到流(TFileStream)中以发送回客户端时遇到了一个小问题。它不是每次都发生,但很随机。。。我一直有个例外。。。

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

它发生在这条线上:

Str:= TFileStream.Create('C:SomePathSomeFile.html', fmOpenRead);

(Str是TFileStream

我假设这个消息是不言自明的,但我绝对需要避免它。这个异常只发生在调试模式下,但我需要调试这个东西,而不用担心一直收到这个消息。

奇怪的是,大多数时候,文件都是加载并发送回来的。

我怎么能避免这种情况呢?为什么它不允许我打开它不止一次,即使它是只读的?

正如@ain在注释中所说,您在构造函数中缺少共享模式。

更改此

Str:= TFileStream.Create('C:SomePathSomeFile.html', fmOpenRead);

到这个

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

最新更新