VisualBasic Aufbauen einer Listbox sehr langsam

easy.2ci

Commodore
Registriert
Mai 2006
Beiträge
4.388
Ich lass mit folgendem Code eine Listbox aufbauen:
Code:
Dim myFile As String = My.Computer.FileSystem.ReadAllText(OpenFileDialog1.FileName)
            For Each line As String In myFile
                ListBox1.Items.Add(line)
            Next line

Visual Studio 2010
.Net 4.0

Hab nie viel mit Listboxen gemacht, daher mal die Frage warum das so langsam ist.

Ich lese eine Textdatei ein mit 16.000 Zeilen, die Datei ist insgesamt etwa 1,0MB groß. Die Eigenschaft Sorted der Listbox ist auf True, bei jedem Add Aufruf führt er also eine Sortierung und Reorganisation der Listbox durch.

Das ganze läuft mittlerweile seit 10 Minuten und der Prozess macht Vollauslastung meiner CPU.

Kennt jemand eine schnellere Möglichkeit? Wenn ich die Datei an der Kommandozeile mittels " type test.txt | sort " sortieren lasse ist das Ergebnis sofort da.
 
- Zeilen in ein String Array/Liste kopieren.
- Sortieren
- der Listbox als DataSource zuweisen.

Musst auch prüfen ob die Listbox so viele einträge verträgt. 16.000 auf einmal ist schon etwas heftig.
 
Danke für die Tipps. Hab beides ausprobiert, bevor mir dann mein Fehler bewusst wurde.

Mit dem Datei einlesen und for each line Befehl kam nur Murks raus, weil er gar nicht zeilenweise meine Datei eingelesen hat, sondern Buchstabe für Buchstabe. Die Listbox wurde also etwa 1 Millionen Zeilen lang und das dauerte eben.

Jetzt verwende ich Split zum sauberen Zerlegen und sieht nun so aus und braucht auf meiner betagten Maschine nur noch 5 Sekunden:

Code:
Dim myFile = Split(My.Computer.FileSystem.ReadAllText(OpenFileDialog1.FileName), vbCrLf)
            For Each value As String In myFile
                ListBox1.Items.Add(value)
            Next
 

Ähnliche Themen

Zurück
Oben