2012-04-24 24 views
1

我使用以下代碼來修改,可以從多個進程的FileStream爲

using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.ReadWrite, FileShare.Read)) 
{ 
    var d = XDocument.Load(fs); 
    d.Descendants("TestNode").FirstOrDefault().Descendants("MyInfo").FirstOrDefault().Attribute("Id").Value = "Tested Successfully"; 
    XElement x1 = new XElement(new XElement("PoolId", "A91")); 
    d.Root.Add(x1); 
    fs.Seek(0, SeekOrigin.Begin); 
    d.Save(fs); 
} 

此方法是LOCK對象內使用XML文件共享不同進程之間的文件。

現在,我總是要覆蓋XML文件的內容,所以我用

fs.Seek(0, SeekOrigin.Begin); 

這是正確的?有沒有更好的辦法?

+0

什麼是鎖的目的是什麼?如果是爲了相互排斥而跨越過程,則需要使用互斥鎖。 – 2012-04-24 15:50:12

回答

1

已保存覆蓋,您無需致電尋求。

你在做什麼XElement?

new XElement(new XElement("PoolId", "A91")); 

可以只讀取

new XElement("PoolId", "A91"); 
+0

保存不能覆蓋,它會追加相同的XML ..嘗試不使用搜索... – 2012-04-24 15:59:06