2010-11-29 4 views
2

나는 C# 응용 프로그램을 개발했으며 사용자는 응용 프로그램에서 각 레코드에 대한 사진을 선택했습니다. 그러나 사용자는 또한 미리 선택된 사진을 새로운 것으로 변경할 수 있어야합니다. 사용자가 사진을 변경하면 응용 프로그램은 먼저 응용 프로그램 디렉토리에서 오래된 사진을 삭제 한 다음 새 사진을 복사하지만 응용 프로그램에서 파일을 삭제할 수 없으므로 응용 프로그램이 파일을 응용 프로그램에서 사용하기 때문에 응용 프로그램이 예외를 발생시킵니다 달리는. 어떤 사람이 이것을 어떻게 처리 할지를 알 수 있습니까? 나는이 프로세스가 파일을 액세스 할 수응용 프로그램이 실행되는 동안 파일을 삭제하는 방법

를 제외하고는

당신의 도움에 감사 'D : \ 내 프로젝트 \ Hawkar'sProject \ SOFTWARE \ 응용 프로그램 \ 빈 \ 디버그 \ 사진 \ John Smith.png '이 (가) 다른 프로세스에서 사용 중이기 때문입니다. 우선

//defining a string where contains the file source path 
      string fileSource = Open.FileName; 

      //defining a string where it contains the file name 
      string fileName = personNameTextBox.Text + ".png" ; 

      //defining a string which specifies the directory of the destination file 
      string fileDest = dir + @"\Photos\" + fileName; 

      if (File.Exists(fileDest)) 
      { 

       File.Delete(fileDest); 
       //this is a picturebox for showing the images 
       pbxPersonal.Image = Image.FromFile(dir + @"\Photos\" + "No Image.gif"); 
       File.Copy(fileSource, fileDest); 
      } 
      else 
      { 
       File.Copy(fileSource, fileDest); 

      } 
      imageIDTextBox.Text = fileDest; 
+0

"안녕하세요 Gents"-> ;-)를 보는 남성 만있을 수 없습니다. – smirkingman

답변

3

, 당신의 코드는 좋지 않다. 현재 이미지가없는 경우에만 새 이미지가 복사됩니다 (다른 경우). 그러나 오래된 이미지가있는 경우이 이미지 만 삭제하고 새로운 이미지는 복사하지 마십시오.

코드는 더 나은 다음과 같아야합니다

if (File.Exists(fileDest)) 
{ 
    File.Delete(fileDest); 
} 

File.Copy(fileSource, fileDest); 
imageIDTextBox.Text = fileDest; 

이 코드는 작동해야하지만이 파일이 이미 사용하고 있다는 예외를 받고있는 경우, 당신은 확인해야합니다 "여기서"당신이 파일을 사용합니다. 프로그램 시작시 파일을 읽는 중일 것입니다. 핸들이 열려있는 경우이 사용자 파일에 액세스하는 프로그램의 모든 부분을 확인하십시오.

0

당신의 도움을 많이 주셔서 감사합니다. 코드에서 실수로 인해 미안합니다. 원래 코드는 작성한 것과 같습니다.하지만 우연히 내가 실수로 게시했을 때 나는 이것을 다음과 같이 넣었습니다. . 응용 프로그램이 실행될 때 각 레코드의 이미지가 표시되는 그림 상자가 있습니다. 그 이유는 그림 상자에서 한 번 사용 되었기 때문에 그림을 변경하려고 할 때 응용 프로그램에서 예외가 발생하는 이유입니다. 원본 사진을 삭제하기 전에 다른 사진을 사진 상자에로드하십시오. 위의 내용을 수정할 수 있다면 수정할 수 있습니다.

관련 문제