-1

次の質問は典型的なプログラミングの質問ではありませんが、私見のプログラマーはこれに影響を受けており、解決策を持っている可能性が最も高いです。

サーバーと通信する Windows デスクトップ アプリケーションがあります。クライアント アプリには、オプションの "オフライン モード" 機能 (主にラップトップ向け) があり、ユーザーが LAN に戻るまで DTO をローカルでシリアル化することによって機能します。DTO は暗号化された XML ファイルにシリアル化され、データが変更されるたびに書き込まれます (ユーザーの [AppData]/AppName ディレクトリに書き込まれます)。

問題は、一部のユーザーはアプリケーションを開いたままラップトップを閉じて最終的にバッテリーが切れる傾向があり、オフィスに戻ったときに XML ファイルがラップトップのディスクのどこにも存在しないことです。

私は数え切れないほどコードをくまなく調べ、さまざまなライター/ストリーム フラッシュを実装し、ファイルが書き込まれた後にファイルの存在/タイムスタンプ チェックなどを行いましたが、まだ発生しています。私が考えることができる唯一のことは、XP、Vista、および 7 でデフォルトで有効になっている Windows の書き込みキャッシュです。ユーザーはグローバルに書き込みキャッシュをオフにする必要があります)?

ディスクキャッシュのフラッシュを行うように見えるSysinternals Syncを見つけましたが、ユーザーが持っていない管理者権限が必要です。

4

1 に答える 1

0

個人的には、極端な場合を除いて、ディスク キャッシュが小さなファイルの物理的な書き込みを数秒以上遅らせる可能性があることを真剣に疑っています。

データがシリアル化されるたびに行をログに記録し、それが書き込まれたかどうかを確認することをお勧めします。これは、あなたが最初に試したことだと思います。

于 2012-07-04T14:42:34.940 に答える