我工作的一個應用程序,將讓工作運行指數造詣。改寫快速連續相同的文件?
我可以在工作會議結束時寫一次,但是我不想冒險失去數據,如果事情炸燬。因此,我重寫到磁盤(XML),每一個新的條目或修訂是由用戶製作時間。
private void WriteIndexFile()
{
XmlDocument IndexDoc
// Build document here
XmlTextWriter tw = new XmlTextWriter(_filePath, Encoding.UTF8);
tw.Formatting = Formatting.Indented;
IndexDoc.Save(tw);
}
有可能快速連續觸發寫操作。如果發生這種情況,它會嘗試打開該文件編寫前先寫操作完成。 (雖然它不會是正常的,我想這是可能的文件被打開,以供其他程序。)
我如何檢查文件是否可以重新寫的?
編輯澄清:這是自動化實驗室數據收集系統的一部分。用戶將點擊一個按鈕來捕獲數據(保存在單獨的文件中),並確定數據包的子任務。通常,點擊之間的時間爲3-10分鐘。
如果他們做出了錯誤,他們需要能夠回去並糾正它,所以它不是一個只追加使用率。
最後,該文件會被其他的自動化工具和手動人類閱讀。 (XML/XSLT)
尺寸會受到限制,因爲每個工作會議(工人移位或更小)將具有產生新的索引文件。
進一步的問題:作爲壓倒性的共識是不使用XML,並在僅附加模式寫,我會怎麼解決回去和糾正早期項目的要求?
我正在考慮有一個「髒」標誌,標誌設置後保存幾分鐘後關閉工作會議。如果在此期間發生多個編輯,則只會發生一次寫入 - 沒有更快的用戶 - 如果保存失敗,也會有重試/取消對話框。思考?
當寫入失敗時你打算做什麼?向用戶報告並撤消?沒有寫會阻礙你繼續下去? – 2010-01-29 21:09:18
@Moron:這確實是主要問題。如果失敗可以從優雅地恢復並且寫作恢復,那麼它是可以的。如果故障無法恢復(即某些其他未知應用將文件或磁盤鎖定爲已滿),則繼續丟失數據將是一種損失。 也許重試/取消對話框...? – mbmcavoy 2010-01-29 21:59:50