1
我使用事務性NTFS來將多個寫入操作原型化爲多個文件。 問題是,提交後,我可能無法重新打開一個文件,也許是因爲比賽條件。事務性NTFS - 等待CommitTransaction
事件的順序是:
- NTFS交易與
CreateTransaction
- 文件創建了
CreateFileTransacted
- 寫被打開完成的文件
- 文件被關閉與
CloseHandle
- 交易承諾
CommitTransaction
- 個文件被重新開
CreateFile
讀/寫
最後一步有時會失敗,錯誤代碼3: ERROR_PATH_NOT_FOUND - 系統找不到指定的路徑。 重新執行程序時,會找到該文件。 這種情況很少發生,但以完全隨機的方式發生,意思是在重新打開同一個文件時不總是 。
我的理論是,如果通過Windows終止交易需要很長的時間,則文件不可用於以讀/寫模式打開,直到事務終止爲 。我的程序然後嘗試在非事務模式下打開我自己的文件 失敗。
我認爲,爲避免這個問題,我需要等待交易 完成之前重新打開文件。 但是,我還沒有找到任何記錄的方法來做到這一點。