1

我目前正在尝试使用线程在 c# 中读取和写入数据到 xml 文件,我有一个实用程序类,它具有读取 XML 文件然后将数据写入 xml 的功能。我这样做的方式如下。

public class XMLUtil
{

 String lockingObject = "";

 public bool WriteToXml(Product product)
 {
   lock(lockingObject)
   {
       XDocument xDoc = XDocument.Load("file.xml")
   }

   //Code to add data to XElement

   xDoc.Add(xElement)
   lock(lockingObject)
   {
       XDocument xDoc = XDocument.Save("file.xml")
   }
 }

}


public class SomeOtherClass
{

   XMLUtil xmlUtil = new XMLUtil();

   private async void btn_Click(object sender, EventArgs e)
   {
     bool t = await Task.Run(() => xmlUtil.WriteToXml());
   }
}
static class Program
{

// default methods

while (true)
{
   t = await Task.Run(() => XMLUtil.CheckChanges());
   await Task.Delay(20000);
}


}

我还有一个后台线程,它不断检查 XML 文件中的更改以将视图重新加载给用户,因为我仍然收到 IO/Exception 说该文件已被使用,因此无法打开...我该如何解决?

4

1 回答 1

2

字符串在 .NET(MSDN参考)中进行了实习,您不必将它们用作lock构造。尝试将您定义lockingObject

private static object lockingObject = new object();

并在里面使用lock

于 2019-12-10T19:58:54.930 回答