2010-12-30 4 views
1

매개 변수 저장을 위해 .ini 파일을보다 효율적으로 사용하기 위해 일부 기존 코드를 업데이트하고 있습니다. 기본적으로 모든 설정은 일단 읽혀지면 내부적으로 캐시되므로 파일을 열지 않고 다시 읽을 수 있습니다. 캐시를 사용하기 전에 캐시 생성 시간을 파일의 마지막 수정 시간과 비교하고 업데이트 된 파일로 캐시를 다시 작성합니다. 이 동작은 최종 수정 시간을 업데이트하지 않기 때문에 사용자가 파일 이름을 변경하는 경우를 제외하고는 훌륭하게 작동합니다.파일의 이름이 변경되었는지 어떻게 알 수 있습니까?

app.iniapp - copy.ini에 복사 그렇다면, app.ini을 삭제하고, 내 프로그램은 이제 오래된 캐시를 사용 app.ini에 복사본의 이름을 변경, 내 프로그램의 app - copy.ini 외부를 수정합니다. 프로그램에서 app.ini의 삭제를 발견하고 캐시를 지우더라도 복사본의 이름이 바뀌면 캐시를 다시 작성하지 않습니다. 이 프로그램은 매우 오랜 시간 동안 무인으로 실행되도록 설계되었으므로 파일을 계속 모니터링하는 것을 피하고 싶습니다. 매개 변수를 읽어야 만 검사합니다.

+0

같은 것을 사용할 수 있습니다, VB6에 대한 filewatcher입니다 가치있는? – MarkJ

+0

@ MarkJ - 아니요, 아직 없습니다. 방금 캐싱 코드를 작성하고 곧 성능 향상을 테스트 할 것입니다. VB6에 다시 익숙해지는 것이 대부분 운동 이었지만, 성능이 향상되면 끝내줍니다. 하지만 내 주된 질문은 이름이 바뀐 파일을 감지하는 것이 었습니다. 특정 응용 프로그램은 단지 예일뿐입니다. 파일 감시자는 아마도이 문제를 해결할 것입니다. 그러나 정말로 그 질문에 대답하지는 않습니다. – dlras2

+2

"NTFS는 마지막 액세스 이후 파일에 대한 마지막 액세스 시간을 최대 1 시간 지연합니다." 이 타임 스탬프는 파일 시스템 오버 헤드를 줄이기 위해 저 휘발성 특성을 의미하기 때문입니다. INI 파일 자체는 고도의 휘발성을 의미하지 않으므로 손으로 직접 편집 할 수 있습니다. 프로세스를 엄격하게 제어해야하는 경우 사용자가 직접 수정하지 않는 파일에 설정 UI를 제공해야합니다. 그런 다음 필요에 따라 제어 된 방식으로 데이터 내에서 고유 한 고밀도 타임 스탬프를 사용할 수 있습니다. 성능을 위해 시스템 수준의 파일 캐싱에 의존하십시오. – Bob77

답변

1

는 당신이 필요로하는 것은 당신이 그물과 상호 운용성하여 시도하거나 아마도 당신이 정말 사용자가 고려할 것이라는 성능 향상을 달성 할 수 있음을 확인했습니다이 VB6 Implementation

+0

나는 이것이 내가 할 것이라고 생각한다. 그 특성을 사용하여 파일에서 변경 사항을 감지 할 수 있는지 여부는 알고있는 것이 좋습니다. – dlras2

+0

파일이 변경되면 아카이브 속성을 조사 할 수 있습니다. –

0

해당 시나리오의 경우 프로그램에서 사용하는 각 .ini 파일의 내용 해시를 유지하고 주기적으로 각 파일을 확인할 수 있습니다. 해시가 마지막으로 확인한 시간과 다른 경우 내용이 변경되었거나이 이름 바꾸기 시나리오로 인해 다른 파일이 발생했습니다.

+0

이 문제는 설정을 검색해야 할 때마다 파일을 열지 않아도 성능을 향상 시키려고한다는 것입니다. 모든 것을 해시하는 것은 좋은 해결책이 아닙니다. – dlras2

관련 문제