错误:此文件由其他用户使用

时间:2011-03-25 05:14:41

标签: c# linq-to-xml

XML

<?xml version="1.0" encoding="utf-8"?>
<Questions>
   <Question>
   <Id>1</Id>
   <Text>aaaa</Text>
</Question>
   <Question>
    <Id>2</Id>
    <Text>bbb</Text>
   </Question>
</Questions>

代码

var doc = XDocument.Load(Server.MapPath(".") + "\\Questions.xml");
var elements = from element in doc.Descendants("Question")
               select new
               {
                   Id = element.Element("Id").Value,
                   Text = element.Element("Text").Value,
                   Reserver = element.Element("Reserver") != null
               };

当一个项目与我同时打开Mozilla和IE8这个错误时我的xml文件被另一个用户使用,但当然有时会出现此错误,有时也没有错误

修改

如果两个用户请求同时给显示器一个使用XML的页面。在这种情况下,两者同时我想要一个XMl打开,使另一个用户

使用该文件时出错

2 个答案:

答案 0 :(得分:0)

我认为你正在寻找的是一种方法来查看该文件是否已被其他用户使用,因此被锁定并且您收到错误。 Heres a question that shows how to check if a file is open

答案 1 :(得分:0)

如果您想在用户之间共享,那么您可以在共享模式下加载它:

using (FileStream fs = File.Open(Server.MapPath(".") + "\\Questions.xml", FileMode.Open, FileAccess.Read, FileShare.Read)) {
  var doc = XDocument.Load(fs);
  // ... rest of your code...
}

(注意:未经测试的代码。)

使用FileAccess和FileShare可以规范您希望如何进行共享访问。例如,在此示例中,只能打开文件以进行共享读取,不会发生写入。如果您想允许写作,则需要指定FileShare.ReadWrite。但是当你阅读它时,文件会发生变化。

如果这是在ASP.Net下(我假设你有多个用户),你可能要考虑在第一次阅读时将文件缓存在内存中。