我已經繼承了一些代碼,它涉及將數據(從外部源獲取)寫入XML文件的計劃任務,以及一個讀取說XML文件獲取信息提交給訪問者。在單獨線程中用XmlWriter.Create()和XmlDocument.Load()處理IOExceptions
沒有同步到位,不用說,有時計劃的任務無法寫入文件,因爲它目前打開供閱讀。
作家代碼的心臟是:
XmlWriter writer = XmlWriter.Create(fileName);
try
{
xmldata.WriteTo(writer);
}
finally
{
writer.Close();
}
和閱讀器代碼的心臟是:
XmlDocument theDocument = new XmlDocument();
theDocument.Load(filename);
(是沒有例外的任一端處理)
我我不知道如何以最佳方式嘗試同步這些。據我所知,無論是XmlWriter.Create()還是XmlDocument.Load()都可以使用任何有關文件訪問模式的參數。我是否應該自己管理底層FileStream(使用適當的訪問模式)並使用接受Stream參數的.Create()和.Load()重載?
或者我應該趕上IOExceptions並做一些「趕上,等待幾秒鐘,重試」的方法?
感謝您的支持 - 我想我會採用在讀取中使用FileShare.ReadWrite FileStream的方法。我主要關心的是確保更新永遠不會失敗,因爲當前正在讀取的文件,這種方法應該保證,對嗎? – Carson63000 2010-07-26 03:22:14
它應該保證更新不會失敗,但是如果文檔在讀取時發生更改,則網站可能會因異常而失敗。 – jrista 2010-07-26 04:22:26