我正在使用一些 XML 文件和文本文件来为一个私人项目存储我的数据,这是我和另外一个人在使用该应用程序,它工作正常。我不使用 SQL 数据库的原因与我认为的问题无关。
在读取和写入我的文件时,我总是使用lock(object) {}以避免读/写问题。
问题是,在以不同方式出现性能问题和/或错误之前,我假设有多少用户可以调用想要读取和写入文件的函数,我会遇到什么问题?
如果有人与多个用户或更多用户一起尝试过,请回答,我真的很想知道:)
提前致谢!
编辑 每个锁定持续 1 到 2 毫秒。
假设每个用户都在他们自己的计算机上运行应用程序并访问共享驱动器上的 xml 文件,那么您应该使用文件锁定机制而不是对象锁定。您可以使用不共享打开文件进行读写。
例如:
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.
}
}
我希望这对您的探索有所帮助。
更好的方法是使用 DBE 或创建自己的,它可以将数据加载到 RAM 并管理并发访问。