2010-11-22 41 views
2

我正在研究一個應用程序,該應用程序讀取並編輯xml文件,但使用XDocument類Load()和Save()方法。如果另一個應用程序或我的應用程序的另一個實例正在運行,那麼一個文檔可能會覆蓋另一個文檔在內存中所做的更改,而xdocument並未持續更新(reLoading)。同時運行的程序不會同時編輯xml文件的同一部分。解決這個問題的最好方法是什麼?我應該在做任何改變之前做一個Load嗎?還是有更優雅的方法?同時編輯C#中的xml文件

+0

你可以在編輯時鎖定文件,也可以使用單個文件實例? – genericuser 2010-11-22 23:11:19

+1

@Priyaya10單實例不保證線程安全。 – dexter 2010-11-22 23:18:43

回答

3

最好的解決方案不是使用XML。

使用(小)數據庫。

在多用戶情況下使用任何類型的文本文件都非常困難,而且對於不同部分的事實只有在固定長度和(因此)固定位置記錄(行)才能用於盈利, 。 XML不能實現這一點。

在編輯之前執行加載操作只會使問題出現頻率降低。總會有變化失去的機會,你將在文件系統級別上有競爭條件。爲了使它工作,你必須使用鎖定文件的方案。你將需要一個額外的文件。

0

您正在討論可以修改文件的多個進程。如果您想保留文件而不是將數據放入公共存儲區(MS SQL),則需要實施互斥鎖以確保只有一個應用程序可以隨時訪問文件。