我们有一个充当表单设计器的网站应用程序。
表单数据存储在 XML 文件中。每个表单都有自己的 xml 文件。
当我编辑表单时,我基本上是重新创建 XML 文件。
public void Save(Guid form_Id, IEnumerable<FormData> formData)
{
XDocument doc = new XDocument();
XElement formsDataElement = new XElement("FormsData");
doc.Add(formsDataElement);
foreach (FormData data in formData)
{
formsDataElement.Add(new XElement("FormData",
new XAttribute("Id", data.Id)
new XAttribute("Name", data.Name)
// other attributes
));
}
doc.Save(formXMLFilePath);
}
这很好用,但我想确保两个用户不会同时更新 XML 文件。我想以某种方式锁定它。
如何单独锁定每个文件的保存过程?
我可以像下面那样锁定保存功能,但这会锁定所有用户,即使他们保存了不同的 XML 文件。
private static readonly object _lock = new object();
public void Save(Guid form_Id, IEnumerable<FormData> formData)
{
lock(_lock)
{
XDocument doc = new XDocument();
foreach (FormData data in formData)
{
// Code
}
doc.Save(formXMLFilePath);
}
}