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 に答える