Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   TListview Aktualisierung durch Thread(s) optimieren? (https://www.delphipraxis.net/160270-tlistview-aktualisierung-durch-thread-s-optimieren.html)

delphinub23 5. Mai 2011 12:56

AW: TListview Aktualisierung durch Thread(s) optimieren?
 
Ich dachte ich kann keine direkte TStringliste an einen TListview übergeben?

DeddyH 5. Mai 2011 12:58

AW: TListview Aktualisierung durch Thread(s) optimieren?
 
Zeig uns doch einfach Deinen Code (den relevanten Teil).

delphinub23 5. Mai 2011 12:59

AW: TListview Aktualisierung durch Thread(s) optimieren?
 
Habe ich bereits in einem vorherigen Post getan :)

Bernhard Geyer 5. Mai 2011 13:01

AW: TListview Aktualisierung durch Thread(s) optimieren?
 
Wie lange dauert folgendes:

Delphi-Quellcode:
iCount := Handler.GetAllDataSets.Count;
for i := 0 to iCount - 1 do
begin
  lvListItem := lv.Items.Add;
  lvListItem.SubItems.Add('Test');
  lvListItem.SubItems.Add('Test2');
  lvListItem.SubItems.Add('Test3');
end;
Das ist die Zeit der GUI-Eintragen + Aktualisieren.

DeddyH 5. Mai 2011 13:02

AW: TListview Aktualisierung durch Thread(s) optimieren?
 
Ist GetAllDataSets etwa eine Funktion?

delphinub23 5. Mai 2011 13:07

AW: TListview Aktualisierung durch Thread(s) optimieren?
 
@DeddyH: Ja. Ist das "böse"?
@Bernhard Geyer: 296ms

Also ist das auch schonmal schlecht. Danke!

DeddyH 5. Mai 2011 13:08

AW: TListview Aktualisierung durch Thread(s) optimieren?
 
Dann setz einmal einen Haltepunkt in diese Funktion und schau, wie oft sie bei Abarbeitung des geposteten Codes durchlaufen wird.

himitsu 5. Mai 2011 13:12

AW: TListview Aktualisierung durch Thread(s) optimieren?
 
Auf die ListView sollte man besser nicht via thread zugreifen. (die VCL ist nicht threadsicher)

Man könnte aber im Hintergrund in einem Thread eine Liste zusammenstellen
und dann im Hauptthread oder via Synchronize nur die Änderungen in der ListView anpassen.
Geht natürlich schneller, als die aktuellen Items zu löschen und alles neu zu erstellen.

Aber auch wenn man vorher nur alle Daten im Thread zusammenstellt und dann nur noch alles schnell in den TreeView reinkopiert, sollte es gehen
(alles löschen und Items Anhand der vorher zusammengestellten Daten neu einfügen)

Ansonsten würde ich eher den VirtualTreeView empfehlen, denn dieser arbeitet wesentlich schneller und bietet auch die Möglichkeit ganz schnell Nodes auszutauschen.



Und was macht denn GetAllDataSets intern?

delphinub23 5. Mai 2011 13:18

AW: TListview Aktualisierung durch Thread(s) optimieren?
 
Danke für eure schnelle Hilfe!

@DeddyH: Danke für den eindeutigen Hinweis. Ich stand echt aufm Schlauch :oops:

Jetzt habe ich die Struktur etwas geändert und sieheda < 150ms

MfG
dnub


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:58 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz