2012-07-04 143 views
-1

下面的問題不是一個典型的編程問題,但恕我直言,程序員受此影響,並最有可能有一個解決方案。Windows磁盤寫入緩存可能導致丟失的文件?

我有一個與服務器通信的Windows桌面應用程序。客戶端應用程序具有可選的「脫機模式」功能(主要用於筆記本電腦),該功能通過在本地序列化DTO直到用戶返回到他的LAN中工作。 DTO被序列化爲加密的XML文件,每當數據改變時寫入(寫入用戶的[AppData]/AppName目錄)。

問題是,有些用戶傾向於讓應用程序打開並關閉筆記本電腦,直到最終耗盡電池電量,並且當他們返回辦公室時,XML文件不存在於筆記本電腦磁盤上的任何位置。

我已經無數次地梳理了代碼,在寫入文件之後實現了各種寫入/刷新刷新,文件存在/時間戳檢查等,並且它仍在發生。我唯一能想到的就是windows write-caching,它在XP,Vista和7上默認啓用。是否知道它可能會導致這種問題,以及如何在我的應用程序中阻止它們(缺少強制用戶全局關閉寫入緩存)?

我發現Sysinternals Sync這似乎是磁盤緩存刷新,但它需要我的用戶沒有的管理員權限。

回答

0

我個人懷疑任何磁盤緩存可能會延遲寫入一個小文件的時間超過幾秒,除非極端情況。

我會建議每當數據被序列化時記錄一行,並檢查它是否被寫入;這是我相信你先嚐試過的。