내 고객 중 한 명이 내 제품을 사용하려고 할 때마다 예외가 발생했습니다. 발생한 예외의 호출 스택을 얻었습니다. 맨 위는 다음과 같습니다.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.__Error.WinIOError()
at System.IO.Path.GetTempFileName()
at System.Windows.Input.Cursor.LoadFromStream(Stream cursorStream)
at System.Windows.Input.Cursor..ctor(Stream cursorStream)
인터넷 검색 을 통해 % TEMP % 폴더에 65535 개 이상의 임시 파일이있을 때이 예외가 발생한다는 블로그 게시물 이 많이 있으며 해결책은 단순히 이전 임시 파일을 지우는 것입니다. 고객에게 그렇게하도록 요청할 수 있지만 이것은 일시적인 해결책 일 수 있습니다. GetTempFileName을 자주 호출하는 다른 소프트웨어를 정기적으로 실행하는 경우 문제가 반복적으로 발생하는 경우 어떻게합니까?
어떻게 든 다른 것을 손상시킬 수 있으므로 프로그래밍 방식으로 % TEMP % 폴더를 지울 수 없으며 GetTempFileName을 호출하고 대신 내 임시 폴더를 사용하는 것을 피할 수 없습니다.
이에 대한 영구적 인 해결책이 있습니까?
업데이트 : % TEMP % 폴더에 로그 파일이 넘쳐나는 문제는 내 코드로 인한 것이 아니며 고객 컴퓨터의 다른 타사 응용 프로그램으로 인해 발생한 문제임을 확인했습니다. 나는 또한 구현을 살펴 보았고 Cursor.LoadFromStream분명히 잘못이 아닙니다. 임시 파일을 생성하지만 finally블록 에서 삭제합니다 .