2012-07-04 1 views
-1

다음 질문은 일반적인 프로그래밍 질문이 아니지만 IMHO 프로그래머는이 문제의 영향을 받아 해결 방법이 가장 있습니다.Windows 디스크의 캐싱에 파일 쓰기가 누락 될 수 있습니까?

저는 서버와 통신하는 Windows 데스크톱 응용 프로그램이 있습니다. 클라이언트 응용 프로그램에는 선택적인 "오프라인 모드"기능 (기본적으로 랩톱 용)이 있습니다.이 기능은 사용자가 LAN으로 돌아올 때까지 로컬에서 DTO를 직렬화하여 작동합니다. DTO는 데이터가 변경 될 때마다 쓰여지는 암호화 된 XML 파일로 직렬화됩니다 (사용자의 [AppData]/AppName 디렉토리에 기록됨).

문제는 일부 사용자는 응용 프로그램을 열어두고 배터리가 완전히 소모 될 때까지 랩톱을 닫는 경향이 있으며 사무실로 돌아올 때 XML 파일이 랩톱 디스크의 어느 곳에도 존재하지 않는다는 것입니다.

필자는 코드 작성 횟수를 줄 였고 다양한 작성자/스트림 플러시, 파일이 작성된 후 파일 존재/타임 스탬프 검사 등을 구현했으며 여전히 발생하고 있습니다. 내가 생각할 수있는 유일한 것은 XP, Vista 및 7에서 기본적으로 사용되는 Windows 쓰기 캐싱입니다. 이러한 종류의 문제를 일으킬 수 있으며 내 앱에서이를 방지 할 수있는 방법이 무엇인지 알 수 있습니까? 사용자가 전 세계에서 쓰기 캐싱을 해제 할 수 있습니까?)

나는 디스크 캐시 플러시를하는 것처럼 보이는 Sysinternals Sync을 찾았지만 내 사용자에게는없는 관리자 권한이 필요합니다.

답변

0

저는 극단적 인 경우를 제외하고는 디스크 캐시가 물리적으로 작은 파일 쓰기를 지연시킬 수 있음을 심각하게 생각하지 않습니다.

데이터가 serialize 될 때마다 줄을 기록하고 작성되었는지 여부를 확인하는 것이 좋습니다. 당신이 먼저 해봤다고 믿는 것입니다.