File.Delete 시 동기 함수지만 해당 함수가 끝났다고 파일이 완전히 지워진것을 보장하지 않는다.
Directory.GetFiles 또한 이미 지워진 파일이 포함되거나, 포함하여 서브 디렉토리를 찾다가 오류를 발생시키는 경우가 있다.
FileInfo나 DirectoryInfo 와 같이 refresh 가 포함되어있는 클래스도 똑같은 문제가 발생할수있음..
아주 간발의 차로 이루어지는 일들 (Delete 하자마자 GetFiles 하는경우) 에서 예외가 발생할수있으며 따라서 한 스텝씩 디버깅할때는 발생하지 않아서 미쳐버린다 ㅜㅜ
아마 OS 파일시스템 관리에서 처리중에 접근하면 그런듯..
해결방안은 Sleep ... 을 걸거나 파일 와쳐를 써야하는듯.
관련 링크
https://stackoverflow.com/questions/6455430/deleted-file-still-appears-in-directory-getfiles-result/6512072#6512072
https://stackoverflow.com/questions/9370012/waiting-for-system-to-delete-file
728x90
'프로그래밍 언어 노트 > C#' 카테고리의 다른 글
[C#/Winform] ElementHost 를 이용하여 WinForm 에서 WPF 컨트롤 호스팅 (0) | 2020.05.14 |
---|---|
[C#] C# 버전별 주요 변화 (0) | 2020.04.01 |
NLog 날짜별 파일 저장. (0) | 2020.02.03 |
[C#] LINQ는 Lazy 하다. (0) | 2020.02.01 |
[C#] Properties to Dictionary (0) | 2020.01.30 |