4

我一直在研究 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

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

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

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

4

1 回答 1

6

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

改变这个

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

对此

Str:= TFileStream.Create('C:\SomePath\SomeFile.html', fmOpenRead or fmShareDenyNone);
于 2012-03-24T17:51:58.653 回答