나는 tempImage.jpg라는 파일을 열고 PictureBox에 양식에 표시하고 있습니다. 그런 다음 Clear라는 버튼을 클릭하면 PictureBox2.Image = Nothing을 사용하여 PictureBox에서 파일이 제거되지만 열린 상태로 잠겨있어 파일을 삭제할 수 없습니다. 어떻게 삭제할 수 있습니까? VB.NET 및 양식 응용 프로그램을 사용하고 있습니다.VB.NET 열린 파일을 어떻게 해제합니까?
감사
나는 tempImage.jpg라는 파일을 열고 PictureBox에 양식에 표시하고 있습니다. 그런 다음 Clear라는 버튼을 클릭하면 PictureBox2.Image = Nothing을 사용하여 PictureBox에서 파일이 제거되지만 열린 상태로 잠겨있어 파일을 삭제할 수 없습니다. 어떻게 삭제할 수 있습니까? VB.NET 및 양식 응용 프로그램을 사용하고 있습니다.VB.NET 열린 파일을 어떻게 해제합니까?
감사
PictureBox2.Image = Nothing
을 사용하면 리소스를 해제하기 전에 가비지 수집기가 리소스를 완료 할 때까지 기다리는 중입니다. vb.net
이 사용에 해당하는이 파일
'to use the image
Dim fs As New IO.FileStream("c:\foopic.jpg", IO.FileMode.Open, IO.FileAccess.Read)
PictureBox1.Image = Image.FromStream(fs)
'to release the image
PictureBox1.Image = Nothing
fs.Close()
+1 왜 * 왜 * 작동하는지 설명. –
안녕하세요, Jon,'process'를 사용하여 열어 본 파일을 공개하지 않는 것으로 보이는'.msg' 파일을 사용하여이 작업을 시도했습니다. –
당신이 Image.FromFile를 사용하는 경우, 당신은 이미지에() .Dispose를 호출해야합니다. 그것을 지우러 간다면 ...
Image currentImage = pictureBox.Image
pictureBox.Image = Nothing
currentImage.Dispose()
그 파일을 출시 할 예정입니다.
제어권을 : 당신은 즉시 해제하려면, 그래서 당신은 이미지를 처리 할 필요가 내가 C에서 무엇을 할 것입니까?
using(filestream fs = new filestream)
{
//whatever you want to do in here
}
//closes after your done
의
Image tmp = PictureBox2.Image
PictureBox2.Image = Nothing
tmp.Dispose()
아직 충분한 (경험 점수가 충분하지 않습니다) 답변을 드릴 수는 없으므로 어 "vb.net에서 사용하는 것과 같습니다."
예, .Net 2.0 이상에서는 "사용"을 사용할 수 있습니다. 의 객체가 마지막으로 finally 블록에서 스트림의 폐쇄를 추가
Dim fs As System.IO.FileStream = Nothing
Try
'Do stuff
Finally
'Always check to make sure the object isnt nothing (to avoid nullreference exceptions)
If fs IsNot Nothing Then
fs.Close()
fs = Nothing
End If
End Try
를 차단하면 닷넷 1.0에서 및 그러나 1.1, 당신은 폐기해야는 반대로이 (상관없이 폐쇄하지 얻을 것이다 보장 연결이 열리면 스트림이 닫히기 전에 코드 폭탄이 튀어 나와 스트림이 열리고 파일이 잠긴다.
이미지를 여는 코드를 표시한다. –