2017-03-01 6 views
0

다음 작업을 수행해야하는 프로젝트 작업 중입니다 : 이미지 파일의 이름을 바꿔야합니다. 나는 위의 방법을 사용하여 파일의 이름을 변경했다파일 복사 프로세스를 감지하는 방법은 C#에서 완료했습니다

try 
{ 
    string oldFileName = @"path\to\person1.jpg"; 
    string desFileName = @"path\to\person2.jpg"; 

    File.Copy(oldFileName, desFileName, true); 

    if (File.Exists(oldFileName)) 
    { 
     File.Delete(@oldFileName); 
    } 
} 
catch (Exception ex) 
{ 
} 

(폴더에서 이미지를 열고, 동일한 폴더에 이름 그것을 저장 & 제공).

이 과정은 새 이름으로 된 파일을 복사하지만, 이전 파일을 제거 할 수 없습니다

예외 메시지 :

때문에 파일 'person1.jpg을 \하는 경로 \'를 액세스 할 수 없습니다 과정 다른 프로세스에서 을 사용하고 있습니다.

해결 방법? 복사 프로세스가 완료되었는지 여부를 감지하는 방법을 제안하십시오.

+3

'Copy '가 아닌'File.Move' –

+0

다음 줄로 이동하여 복사가 완료되었습니다. 가장 가능성있는 경우는 해당 파일이 다른 프로세스 또는 스레드에 의해 사용되고 있다는 것입니다. – Prajwal

답변

2

코드가 동기화되어 있으므로 복사 프로세스는 if 문에 끝납니다.

파일을 다른 프로세스 (프로그래머가 아닌)가 사용하기 때문에이 오류가 발생했을 것입니다. 마비, 너는 페인트 칠했거나 다른 것을 가지고있어.

당신은 프로세스 모니터 또는 뭔가 다른 것을 발견해야합니다. this question을 확인하십시오.