Laden...

Listview (Große Datenmengen)

Erstellt von Andy.C vor 17 Jahren Letzter Beitrag vor 17 Jahren 4.823 Views
Andy.C Themenstarter:in
248 Beiträge seit 2004
vor 17 Jahren
Listview (Große Datenmengen)

Hallo,

kurze Frage zum Listview. Ich fülle das Listview mit daten, die aus einer TXT oder XML-Datei geladen werden. Kleinere Dateien sind kein Problem, nur größere verursachen ein hängen bleiben o.ä.
Ich habe schon versucht das ListView in einem Thread zu füllen. Dies Funktionierte zwar, aber dennoch war das Programm nicht benutzbar.

Mit BeginUpdate und EndUpdate habe ich auch schon versucht, ebenso das gleiche Problem. Ausser das bei geringen Datenmängen ein Geschwindigkeitsvorteil zu spüren war.

Was für möglichkeiten gäbe es denn das Listview element mit Daten zu füllen, die Applikation aber dennoch bedienbar zu halten?

Grüße

Kostenlose Backlinks und Linktausch auf linkSpring

L
63 Beiträge seit 2005
vor 17 Jahren

grundsätzlich kannst du das nur über einen thread steuern. das ist wie mit anderen cpu-intensiven aktionen auch. die frage ist halt nur wie stark wird deine cpu trotz thread gebraucht, denn richtiges multithreading können halt mal nur mehrprozessoren-pcs bzw. eben multicore-pcs.

Andy.C Themenstarter:in
248 Beiträge seit 2004
vor 17 Jahren

Danke ersteinmal,

Es müsste dennoch eine möglichkeit geben das ListView mit Daten zu füllen, ohne dass sich die Applikation aufhängt o.ä.

Mir ist nur wichtig das sich nicht aufhängt oder gar einfriert 🙁

Grüße

Kostenlose Backlinks und Linktausch auf linkSpring

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo Andy.C,

Lordas hat doch die Lösung schon gesagt: verwende einen extra Thread.

herbivore

Andy.C Themenstarter:in
248 Beiträge seit 2004
vor 17 Jahren

Hallo,

ich habe schon einen neuen thread gestartet, jedoch bleibt das ganze unverändert.
Bei einer Liste mit 1000 einträgen, hängt sich das teil.

hmmm...

Grüße

Kostenlose Backlinks und Linktausch auf linkSpring

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo Andy.C,

aus dem Thread darfst du ja nicht direkt auf das GUI zugreifen, sondern musst Control.Invoke/BeginInvoke benutzen. Nur läuft die damit aufgerufene Methode dann wieder im GUI-Thread. Wenn die Schleife in der Methode ist, ist die Situation in der Tat unverändert. Die Schleife muss in den Thread, nur die einzelnen Zugriffe muss man mit Control.Invoke/BeginInvoke durchführen. Dann geht es.

herbivore

-
885 Beiträge seit 2004
vor 17 Jahren

Hallo Andy.C,

ich kann dir auch, sofern du .NET2.0 nutzt, den Backgroundworker zb. für das Füllen von Listen empfehlen. Ist sehr konfortabel.

Andy.C Themenstarter:in
248 Beiträge seit 2004
vor 17 Jahren

Hi,

ich nutze Framework 2.0, vom Backgroundworker habe ich so noch nie etwas gehört 🤔.
Ich such mal nach Backgroundworker, vlt lässt sich ja was finden 🙂

herbivore ich nutze begininvoke / delegate.

Grüße

Kostenlose Backlinks und Linktausch auf linkSpring

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo Andy.C,

herbivore ich nutze begininvoke / delegate.

dann sollte dir helfen, was ich geschrieben habe.

herbivore