LAN に配置されたファイルに問題があります。複数の Deplhi プログラム (クライアント) のみが読み取ることができるいくつかのファイルを書き込む必要がある単一の Delphi プログラム (サーバー) があります。サーバーで次の簡単な手順を使用して書き込みます (DataList は TStrings です)。
Stream:=TFileStream.Create(filePath,fmOpenWrite or fmShareDenyWrite);
try
DataList.SaveToStream(Stream);
finally
Stream.Free;
end;
クライアントは、上記のファイルが変更されているかどうか (FileAge を確認するだけで) 5 秒ごとに確認し、変更が発生した場合は、次の方法で DataList を読み込みます。
try
Stream:=TFileStream.Create(filePath,fmOpenRead or fmShareDenyNone);
DataList.LoadFromStream(Stream);
finally
Stream.Free;
end;
通常、すべてが完全に機能しますが、「ファイルが他のプロセスによって使用されている」という理由で、サーバーまたはクライアントが例外を発生させることがあります。どれが問題なのかわかりません。多くの代替手段を試しましたが、これはサーバーだけで実行されているクライアントのインスタンスが 1 つだけの場合にも発生する可能性があります。
何か案は?
ありがとう!