我在局域网中的文件上遇到了一些问题:有一个单独的Delphi程序(服务器),应该写入一些文件,这些文件只能被多个Delphi程序(客户端)读取。
我在服务器上使用以下简单指令进行写入(DataList是TStrings):
Stream:=TFileStream.Create(filePath,fmOpenWrite or fmShareDenyWrite);
try
DataList.SaveToStream(Stream);
finally
Stream.Free;
end;
客户端每5秒钟检查以上文件是否被修改(通过检查FileAge),如果发生了修改,它们以以下方式加载DataList:
try
Stream:=TFileStream.Create(filePath,fmOpenRead or fmShareDenyNone);
DataList.LoadFromStream(Stream);
finally
Stream.Free;
end;
通常情况下一切都能完美运行,但有时服务器或客户端会因为“文件正在被其他进程使用”而引发异常。我不明白问题出在哪里:我尝试了很多替代方法,但即使只有服务器和一个客户端实例运行,这种情况也可能发生。有什么想法吗?谢谢!