我有一个文件观察程序应用程序,在某些情况下会遇到需要读取的文件的争用问题。我添加了一些代码来处理
的形式System.Threading.Thread.Sleep(2000);
以下是我用来从文件中获取所需信息的代码
using (System.Xml.XmlReader reader = System.Xml.XmlReader.Create(fullFilePath))
{
XDocument doc = XDocument.Load(reader);
reader.Close();
reader.Dispose();
foreach (XElement el in doc.Root.Elements())
{
foreach (XElement element in el.Elements())
{
if (element.Name == "var1")
{
aVal = element.Value.ToString();
}
if (element.Name == "var2")
{
bVal= element.Value.ToString();
}
}
}
}
我的问题是:有没有更快的方法来读取文件的内容,通过释放我的文件中的应用程序锁定?
我更新了要从文件中读取的代码,如下所示:
lock(_lock)
{
using (XmlTextReader xmlTextReader = new XmlTextReader(fullFilePath))
{
XDocument doc = XDocument.Load(xmlTextReader);
foreach (XElement el in doc.Root.Elements())
{
foreach (XElement element in el.Elements())
{
if (element.Name == "AccessionNumber")
{
accessionNumber = element.Value.ToString();
}
if (element.Name == "PatientID")
{
patientID = element.Value.ToString();
}
}
}
}
}
这在调试器中运行良好,但在通过构建的版本使用时不起作用。有什么想法吗?
答案 0 :(得分:0)
最后通过从这篇文章实现文件锁定的重试机制解决了问题,这就是我问最初效率问题的原因。
FileStream and a FileSystemWatcher in C#, Weird Issue "process cannot access the file"
我的回答是由@Dag在上面的帖子中提供的。