C-Sharp App füllt bei Bilderwechsel den RAM
Ich habe mit C# eine Kleine Diashow gebastelt.
Nun bekomme ich immer nach einiger Zeit Wenn der RAM bei 6GB ist {"Nicht genügend Arbeitsspeicher."} bei pictureBox1.Image = Image.FromFile(bildpfad[listBox1.SelectedIndex]);
Wie kann ich den RAM vorher wieder leeren?
private void timer1_Tick(object sender, EventArgs e)
{
cou = listBox1.SelectedIndex;
//pictureBox1.Image = imageList1.Images[cou];
cou++;
if (cou > imageList1.Images.Count-1)
cou = 0;
listBox1.SelectedIndex = cou;
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text != "" && Convert.ToInt32(textBox1.Text) > 0)
timer1.Interval = Convert.ToInt32(textBox1.Text) * 1000;
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
pictureBox1.Image = Image.FromFile(bildpfad[listBox1.SelectedIndex]);
Properties.Settings.Default.Dia = listBox1.SelectedIndex;
}
}
Wie kann ich den RAM vorher wieder leeren?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 324310
Url: https://administrator.de/contentid/324310
Ausgedruckt am: 05.11.2024 um 14:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo,
du möchtest die Image Dispose Variante nehmen ...
Wie wird die ImageList gefüllt?
Grüße
Zitat von @emeriks:
Hi,
Du könntest versuchen, in Zeile 24 ein
einzubauen.
Oder evtl. auch ein
z.B. in Zeile 25 einschieben, oder zeitgsteuert aufrufen.
E.
Hi,
Du könntest versuchen, in Zeile 24 ein
> pictureBox1.Image.Dispose
>
Oder evtl. auch ein
> GC.Collect()
>
E.
du möchtest die Image Dispose Variante nehmen ...
Wie wird die ImageList gefüllt?
Grüße
Nicht zwingend, statt explizit Dispose aufzurufen macht man sowas heutzutage eher mit einem Using-Konstrukt für das Bild und dessen Laufzeit. Es wird dann automatisch freigegeben.
Aber Zweifelsfrei ist das oben dadurch ein MemoryLeak wenn Bildobjekte erstellt aber nicht freigegeben werden.
Gruß mik
Aber Zweifelsfrei ist das oben dadurch ein MemoryLeak wenn Bildobjekte erstellt aber nicht freigegeben werden.
Gruß mik
Hast recht, Kleinigkeit überlesen, sorry.
Aber anstatt die Eigenschaft der Imagebox direkt nach der Zuweisung zu Disposen was ja die Anzeige löschen würde sollte er entweder das Bild einer globalen Variable zuweisen welche er z.B. vor dem neu setzen disposed bzw neu zuweist.
Aber ich denke mal du meintest mit Zeile 24 das er es vor und nicht nach Zeile 24 setzt.
Aber anstatt die Eigenschaft der Imagebox direkt nach der Zuweisung zu Disposen was ja die Anzeige löschen würde sollte er entweder das Bild einer globalen Variable zuweisen welche er z.B. vor dem neu setzen disposed bzw neu zuweist.
Aber ich denke mal du meintest mit Zeile 24 das er es vor und nicht nach Zeile 24 setzt.