C# 有多少用户可以使用XML文件读/写而不会引起问题
我正在使用一些XML文件和文本文件为一个私人项目存储数据,是我和另外一个人在使用这个应用程序,它工作得很好。我不使用SQL数据库的原因与我仔细思考的问题无关 在读取和写入文件时,我总是使用锁(对象){},以避免读/写问题 问题是,在以不同方式出现性能问题和/或错误之前,我可以调用多少用户来读取和写入文件,以及我会遇到哪些问题 如果有人在多个用户中尝试过此功能,请回答,我很想知道:) 提前谢谢 编辑C# 有多少用户可以使用XML文件读/写而不会引起问题,c#,.net,xml,database,C#,.net,Xml,Database,我正在使用一些XML文件和文本文件为一个私人项目存储数据,是我和另外一个人在使用这个应用程序,它工作得很好。我不使用SQL数据库的原因与我仔细思考的问题无关 在读取和写入文件时,我总是使用锁(对象){},以避免读/写问题 问题是,在以不同方式出现性能问题和/或错误之前,我可以调用多少用户来读取和写入文件,以及我会遇到哪些问题 如果有人在多个用户中尝试过此功能,请回答,我很想知道:) 提前谢谢 编辑 每个锁持续1到2毫秒。更好的方法是使用DBE或创建您自己的,它可以将数据加载到RAM中并管理并发访
每个锁持续1到2毫秒。更好的方法是使用DBE或创建您自己的,它可以将数据加载到RAM中并管理并发访问。假设每个用户都在自己的计算机上运行应用程序并访问共享驱动器上的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.
}
}