我正在使用一些XML文件和文本文件来存储私有项目的数据,这是我和另外一个使用该应用程序的人,它工作正常。我没有使用SQL数据库的原因并不是我认为那样的相关问题。
在读取和写入文件时,我总是使用 lock(object){} 来避免读/写问题。
问题是,我可以假设有多少用户在以不同方式获取性能问题和/或错误之前调用想要读取和写入文件的函数,以及我会遇到什么问题?
如果有人尝试过多个用户或更多用户,请回答,我真的很想知道:)
提前致谢!
修改 每个锁持续1到2毫秒。
答案 0 :(得分:2)
假设每个用户都在自己的计算机上运行应用程序并访问共享驱动器上的xml文件,那么您应该使用锁定机制而不是对象锁定的文件。 您可以使用Share none打开文件进行读写。
E.g:
bool success = false;
while (!success)
{
try
{
using(Stream file = new FileStream(path, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
{
// Read current content from file.
// Make changes
// Save new content to file.
}
success = true;
}
catch(IOException e)
{
// Someone else was modifying the file.
// Apart from the message (in different languages) there is no way to tell
// if it was a sharing violation or another IO exception.
}
}
我希望这可以帮助你完成任务。
答案 1 :(得分:0)
更好的方法是使用DBE或创建自己的DBE,它可以将数据加载到RAM中并管理并发访问。