Guten Abend werte Kollegen.
Habe mal zwei kleine Fragen bezüglich der Performance meines Programms.
Kurz zu meinem Programm:
Mein Programm spielt Bilder in einer Art Diashow ab. Die Dateien holt sich folgender Codeteil aus einer Listbox:
Sub shows()
Dim k, s, j, Folder As String
Dim i As Integer
Dim LastStrich, PreLastStrich As Integer
For i = 0 To ListBox1.Items.Count - 1
k = ListBox1.Items.Item(i)
s = k
PictureBox.Image = Image.FromFile(s)
'Extrahieren des Ordners, in dem die Bilder liegen
LastStrich = s.LastIndexOf("\")
j = s.Substring(0, LastStrich - 1)
PreLastStrich = j.LastIndexOf("\")
Folder = s.Substring(PreLastStrich + 1, (LastStrich - PreLastStrich) - 1)
Ordner.Text = Folder
' Verzögerung bevor nächstes Bild geladen wird
Delay(5)
'Überwachung ob Stop-Befehl gesetzt wurde
If StopCheck = 1 Then
Exit For
End If
Next
Exit Sub
End Sub
Wenn das Programm läuft, kann ich im Task-Manager verfolgen, wie bei jedem Bildwechsel die Speichernutzung um die Größe des nächsten geladenen Bildes wächst.
Beispiel: Speichernutzung 12MB --> Bildwechsel --> Speichernutzung 15 MB
Wenn man jetzt hunderte von Bildern in der ListBox hat, könnt ihr euch denken was passiert...
1.FRAGE:
Wie kann ich dieses Verhalten ändern und den Speicher der bereits gezeigten Bilder wieder freigeben?
2.FRAGE:
Warum liegt die Prozessorlast meines Prozesses bei laufender Diashow bei 50 %? (Zur Info, ich hab nen Intel E8500 Core2Duo). Kann man das irgendwie performancesparender programmieren?
Vielen Dank schonmal.