我希望能夠使用XmlTextWriter或LINQ將XML寫入XML,但是我不希望文件被完全鎖定。我希望其他進程能夠讀取Xml文件。它只能在寫入模式下鎖定,以便其他人不能修改文件。 達成此目的的最佳方法是什麼?XmlWriter處於非鎖定模式
回答
您需要在打開FileStream時進行設置。試試這個:
var fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read);
var xmlWriter = XmlWriter.Create(fs);
正如Yahia所言,不能保證寫在任何一點上的數據對讀者來說都是有意義的。
我想只是由我設計的另一個應用程序將能夠以特定頻率訪問該文件,以不斷獲得更新的文件,這些文件也會在一定的頻率下更新。 –
只要文件中的數據在您閱讀時有意義,您應該確定。確保每次寫入後調用fs.Flush(),否則數據可能尚未寫入磁盤。 –
@ClaudioFerraro:我不認爲你完全理解Chris和Yahia所說的。無效的XML將無法被解析,並且您無法保證在撰寫該結構時有效。讀取鎖是這裏最簡單和最少的問題。 –
- 1. 什麼是非鎖定設計模式?
- 2. Windows活動用戶登錄鎖定或處於睡眠模式
- 3. Android關閉DrawerLayout當它處於鎖定模式
- 4. PostgreSQL鎖定模式
- 5. 休眠鎖定模式/鎖定選項
- 6. 鎖定非dbo
- 7. 非功能鎖定模擬器
- 8. 鎖定商業模式
- 9. JPA鎖定模式行爲
- 10. iOS中的模式鎖定
- 11. 定時器處於向上模式
- 12. 當iOS處於鎖定屏幕模式時,我們可以識別手勢嗎?
- 13. 休眠4.3.0.Final和非法嘗試設置鎖定模式的非SELECT查詢
- 14. 的VBScript當PC處於鎖定狀態
- 15. 鎖定事件處理的最有效的設計模式
- 16. IPad應用程序首先進入縱向模式,然後在鎖定時處於橫向模式的屏幕解鎖後進入橫向模式
- 17. 如何以編程方式確定Linux處於PAE模式還是非PAE模式?
- 18. 以編程方式Android模式鎖定/解鎖屏幕
- 19. 如何確定套接字在Windows中是否已處於非阻塞模式?
- 20. 除非處於調試模式,否則servlet沒有響應
- 21. 鎖定後應用程序未處於全屏狀態 - 解鎖
- 22. 在雙重鎖定的鎖定模式中獲取屏障
- 23. mysql中間地帶鎖定共享模式和鎖定更新?
- 24. 鎖定Android手機(鎖定模式或類似)
- 25. 雙重鎖定鎖定模式:是否損壞?
- 26. 使用鎖定模式鎖定應用程序
- 27. 處於編輯模式?
- 28. Webpart處於編輯模式?
- 29. JavaFx處於無頭模式
- 30. MPMoviePlayerController處於全屏模式?
我不知道如何實現你所要求的......但我強烈建議你重新考慮你的方法,因爲大多數XML解析器不適合處理在閱讀時發生變化的XML文件......可能帶來嚴重後果。 – Yahia
順便說一句,你不想直接使用XmlTextWriter。如果您必須使用XmlWriter,那麼您應該使用XmlWriter.Create來創建一個。 –