2012-01-23 22 views
0

我希望能夠使用XmlTextWriter或LINQ將XML寫入XML,但是我不希望文件被完全鎖定。我希望其他進程能夠讀取Xml文件。它只能在寫入模式下鎖定,以便其他人不能修改文件。 達成此目的的最佳方法是什麼?XmlWriter處於非鎖定模式

+6

我不知道如何實現你所要求的......但我強烈建議你重新考慮你的方法,因爲大多數XML解析器不適合處理在閱讀時發生變化的XML文件......可能帶來嚴重後果。 – Yahia

+2

順便說一句,你不想直接使用XmlTextWriter。如果您必須使用XmlWriter,那麼您應該使用XmlWriter.Create來創建一個。 –

回答

5

您需要在打開FileStream時進行設置。試試這個:

var fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read); 
var xmlWriter = XmlWriter.Create(fs); 

正如Yahia所言,不能保證寫在任何一點上的數據對讀者來說都是有意義的。

+0

我想只是由我設計的另一個應用程序將能夠以特定頻率訪問該文件,以不斷獲得更新的文件,這些文件也會在一定的頻率下更新。 –

+0

只要文件中的數據在您閱讀時有意義,您應該確定。確保每次寫入後調用fs.Flush(),否則數據可能尚未寫入磁盤。 –

+0

@ClaudioFerraro:我不認爲你完全理解Chris和Yahia所說的。無效的XML將無法被解析,並且您無法保證在撰寫該結構時有效。讀取鎖是這裏最簡單和最少的問題。 –