VB.NET: Fechando o arquivo após carregar uma imagem


   Carregar uma imagem do disco é muito fácil:

   picturebox1.image=Image.fromfile("nomedoarquivo")

   Porém quando você faz isso o arquivo em disco da imagem permanece aberto, em uso, vinculado ao objeto Image que foi criado. Por exemplo, se você fizer em seguida :

   Io.file.delete("nomedoarquivo")

   Receberá um erro avisando que o arquivo está em uso.

   Quer seja para deletar o arquivo ou apenas para liberar recursos, é importante que não deixemos este arquivo aberto inutilmente. Então, para resolver o problema, podemos fazer a carga da imagem da seguinte forma :

   dim img as image
   dim img2 as bitmap
   img=Image.fromfile("nomedoarquivo")
   img2=new bitmap(img)
   img.dispose()
   picturebox1.image=img2


   Ao fazermos o dispose em img estamos fechando o arquivo e destruindo a imagem em memória. Porém quando fizemos um new bitmap, criamos uma nova cópia dessa imagem, porém em memória e desvinculada do arquivo que está aberto, nos permitindo fecha-lo com o dispose().