Rilascio risorse

mercoledì 17 maggio 2006 - 10.31

ktm86 Profilo | Junior Member

ciao a tutti

sto creando in c# una piccola galleria di immagini.
Tramite la function preview carico le anteprime in un'oggetto image e con la funzione btnNext mi muovo per
far scorrere ad una una le immagini.

Il problema è che ogni volta che scorro un'immagine la ram occupata dall'applicazione aumenta spropositatamente (a volte fino a 300mb, questo quello che dice il taskmanager), così ovviamente rallenta tutto.



private void preview(ArrayList file, int index)
{
string fn = file[index].ToString();
//view image
Bitmap bm = (Bitmap)System.Drawing.Image.FromFile(fn);
picPreview.Image = bm.GetThumbnailImage(136,104,null,IntPtr.Zero);
}

private void btnNext_Click(object sender, System.EventArgs e)
{
sett.INDEXIMAGE++;
lblImageCount.Text = Convert.ToString(sett.INDEXIMAGE + 1);
if(sett.INDEXIMAGE != sett.INDEXMAX -1)
{
btnPrev.Enabled = true;
preview(sett.ARR,sett.INDEXIMAGE);
}
else
{
preview(sett.ARR,sett.INDEXIMAGE);
btnNext.Enabled = false;
}
}

trinity Profilo | Guru

in c# dovrebbe essere lo stesso per rilasciare le risorse di un oggetto in vb net si utilizza il metodo Dispose.

esempio

From1.Close()
Form1.Dispose()

Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/

ktm86 Profilo | Junior Member

ok hai ragione, sapevo che era quello (dispose()) solo che io terminavo picPreview invece della bitmap bm.

Grazie 1000

Cteniza Profilo | Guru

La cosa migliore, quando si ha a che fare con oggetti è strutturare i propri blocchi nel modo seguente:
private void preview(ArrayList file, int index)
{
string fn = file[index].ToString();
//view image
using (Bitmap bm = (Bitmap)System.Drawing.Image.FromFile(fn))
{
picPreview.Image = bm.GetThumbnailImage(136,104,null,IntPtr.Zero);
}
}
In questo modo è garantito il rilascio delle risorse.
using è ora presente anche su vb 2005.

WinNet Profilo | Newbie

Ciao Ragazzi,
anche io ho lo stesso problema ma le risorse che rilascio, nel mio caso ram, sono inferiori a quelle che ha preso nel momento della generazione. Aiuto!!!!!!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5