2017-05-23 1 views
0

에서 C# 웹 클라이언트 IOException이 "{"The process cannot access the file 'C:\\Users\\[redacted]\\AppData\\Roaming\\[redacted]\\Minecraft 1.10\\assets\\objects\\bdbdf48ef6b5d0d23bbb02e17d04865216179f510a' because it is being used by another process."}을"다음의 InnerException의 존재와 "An exception occurred during a WebClient request."파일의 절반 다운로드 오류로 실패, 마인 크래프트에 대한 자산 파일을 다운로드하려고 시도 DownloadCallback

.

나는 FileDownloadCompleted 이벤트를 사용하고 있습니다.

나는 또한 "." 적절한 확장자가 없지만 문제를 해결하지 못한 각 파일의 끝까지.

또한이 문제는 일관성이 없습니다. 이름이 비슷한 일부 파일은 정상적으로 다운로드되지만 다른 파일은 다운로드되지 않습니다. 그러나 인터넷 문제가 아니며 여러 대의 컴퓨터에서 테스트를 거쳤습니다.

어떻게이 예외를 해결할 수 있습니까?

+0

안녕하세요, 파일 이름에 공백이있을 수 있습니까? 그럴 경우 제거해보십시오. 'someString.Replace ("", string.Empty);' –

+1

그 메시지는 "다른 프로그램이 잠겨 있습니다"라는 메시지에 공통적으로 사용됩니다. –

+0

@John Peters, 나는 오류의 의미를 이해하지만이 파일은 처음부터 다운로드되는 파일이며 다른 프로그램도이 파일에 대해 알지 못합니다. – Unknown025

답변

0

임시 해결 방안으로 파일을 사용할 수있을 때까지 기다리는 while 루프를 추가했습니다.

else if(e.Error.InnerException is IOException) 
        { 
         bool canAccess = false; 
         while (!canAccess) 
         { 
          try 
          { 
           File.Move(Userstate[0], Userstate[0]); 
           canAccess = true; 
           Debug.Print("Can now access file: " + Userstate[0]); 
          } 
          catch(IOException) { } 
         } 
        } 

이 코드 DownloadCallback 핸들러의 일부이며 e.Error.InnerException의 상태를 체크한다. 이것은 최고의 솔루션처럼 보이지 않지만, 내가 생각해 낸 유일한 솔루션입니다.

관련 문제