Entwickler-Ecke

WinForms - Ordner und Dateien in Listview auflisten (schnellstmöglich)


Jimmy123 - Fr 14.07.17 11:32
Titel: Ordner und Dateien in Listview auflisten (schnellstmöglich)
Hallo Zusammen,


gibt es irgendein Algorythmus oder eine Möglichkeit alle Daten und Ordner im Listview Object schnellstmöglich anzuzeigen?

Ich meine jetzt nicht: (ist sehr langsam)

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
string dirPath = @"Pfad mit 1000. Dateien";

                List<string> dirs = new List<string>(Directory.EnumerateDirectories(dirPath, "*", SearchOption.AllDirectories));

                foreach (var dir in dirs)
                {
                    listview1.Items.Add(dir.Substring(dir.LastIndexOf("\\") + 1));
                    count++;
                }
                listview1.Items.Add("FERTIG  " + " Count: " + count);


Der Ordner beinhaltet 1000de Dateien in 100. Ordnern. Wenn ich das so starte, brauche ich selbst mit einem Core i7 und 16GB Arbeitsspeicher Minuten.

Vielen Dank...


Jimmy

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt


Ralf Jansen - Fr 14.07.17 13:09

Programmiere den VirtualMode [https://msdn.microsoft.com/de-de/library/system.windows.forms.listview.virtualmode(v=vs.110).aspx] aus.

Ich würde mir aber auch überlgen ob da wirklich alles rein muß. Wenn das Control mit vielen Daten überfordert ist gilt das üblicherweise auch für den User davor und man sollte sein Ansatz überrüfen ob man nicht was hilfreicheres für den User anbieten kann.


Th69 - Fr 14.07.17 13:38

Außerdem blockierst du ja währenddessen die gesamte UI, d.h. IO-Zugriffe und UI sollten in unabhängigen Codeteilen (und Threads/Tasks) ausgeführt werden.

Und ich stimme Ralf zu, daß man soviele Daten nicht auf einmal anzeigen sollte.


Jimmy123 - Fr 14.07.17 16:31

Deine Idee mit dem VirtualMode war super!
Dadurch bin ich auf folgenden Artikel gestoßen:

http://geekswithblogs.net/akraus1/archive/2010/06/21/140545.aspx

Das habe ich dann meinen Bedürfnissen mit einer "foreach" Schleife angepasst. 12.000 Dateien in 1 sek. Genau das was ich wollte.

Somit wäre das Ganze für mich erledigt. Bei Fragen gerne melden.

Danke nochmal!