2009-09-17 6 views
0

내 Windows 응용 프로그램에 이미지 저장 절차가 있습니다 .i는 그리드에서 볼 수있는 다양한 images.the 이미지 세부 정보를 저장합니다. 그리드에서 해당 행을 클릭하면 이미지가 그림 상자에 표시됩니다. .i 삭제 키를 눌러 열려있는 그림을 삭제하려고합니다.이 작업에 대해 "deletefile (path)"코드를 사용했지만 해결 방법을 아는 사람은 "이 파일은 다른 프로세스에서 사용 중입니다."오류가 있습니다. 이 문제 때문에 제발 도와주세요. 고맙습니다.그림이 다른 프로세스에서 사용되었습니다

답변

0

Image.FromStream을 사용하여 이미지 파일을 열고 이미지가로드 된 후에 closestream을 확인하십시오. 그렇게하면 파일에 자물쇠가 없어야합니다.

덧글 추가.
저는 Visual Studio를 가지고 있지 않습니다. 저는 C#을 사용하지만, 이렇게 보일 것입니다.

Dim stream As New FileStream(specified_path, FileMode.Open) 
Dim image As Image = Image.FromStream(stream) 
picturebox1.image = image 
stream.Close() 
+0

내 코드는 다음과 같습니다. my.computer .filesystem.deletefile (경로) – user85511

+0

는 난에 PictureBox " picturebox1.image = image.fromfile (지정된 경로) 이 방법은 fromstream 메도를 사용하고 있음 – user85511

+0

를 닫을 방법에 화상을 열이 코드를 사용하여 이 작업 좋은. 그러나 그림 상자에 표시되는 이미지는 지워지지 않습니다. – user85511

1

해당 파일에서 생성 된 비트 맵 개체에 대한 참조가 있습니까? 그렇다면 Bitmap 개체가 파일을 잠그므로 파일을 삭제할 수 없습니다.

문제는 파일을 삭제하는 위치가 아니며 이미지를 표시하는 방법에 있습니다. 이미지로드 방법을 보여주는 코드를 추가 할 수 있습니까?

Bitmap.FromFile 목록을 사용하여 이미지를로드하면 Bitmap 객체는 파일이 삭제 될 때까지 파일에 대한 잠금을 유지합니다. 따라서 필요하지 않으면 파일을 강제로 해제하려면

구문을 사용하면됩니다. 이렇게하면 잠그지 않습니다. 잠그는 이유는 비트 맵 객체를 만들 때 전체 비트 맵을 메모리에로드하지 않고 요구에 따라 느리게로드하므로 파일에 잠금을 유지해야하기 때문입니다.

+0

난, t 내가 당신이해야합니다 추측에 PictureBox "그럼 picturebox1.image = image.fromfile (지정된 경로) – user85511

+0

에 말해 understand.please 수 있습니다 당신은 속성으로로드 이미지에 대한 참조 유지 : IMG = Image.FromFile (경로) picturebox1.Image = IMG, 다음 이미지를 삭제하기 전에 : picturebox1.Image = NULL; img.Dispose(); img = null; /* 파일 삭제 */ – user85511

+0

에 이미지를 열려면이 코드를 사용하여 detail.please – Locksfree

관련 문제