我一直在开发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);