2 Performance Probleme mit CListCtrl
-
Hi,
ich hoffe ihr könnt mir helfen 2 verschiedene Performance probleme mit CListCtrl.
1. Ich hab ein Dialog welches ein CListCtrl Steuerelement enthält. Ich lade ca. 1000 Datensätze. Ich hatte vor kurzem keine Probleme damit, jedoch jetzt wird alle 0.5 sekunden ein datensatz eingefügt und das dauert ewig bis alle Datensätze in die CListCtrl geladen werden. Komischer weise werden die selben Datensätze in einem anderen Dialog, welches auch ein CListCtrl enthält geladen, jedoch hier werden die Daten (1000) sofort angezeigt. Warum bzw. was ist passiert?
2. Diese Problem ist relative komisch. Abgesehen von dem ersten problem mit dem einem Dialog mit der CListCtrl, haben meine anderen Dialoge kein Problem anfangs die Datensätze sofort anzuzeigen. Jedoch wenn das Programm läuft und ich ein Dialog mit CListCtrl aufrufe welches die Daten in die CListCtrl anzeigt werden sie bei den ersten 3-4 Aufrufen ohne Probleme angezeigt. Es wird immer langsamer wenn ich den Dialog schliesse und wieder starte. Beim fünften aufruf dauert es ca. 20-30 sekunden bis die daten geladen werden. Kompiliere ich neu funktioniert wieder nur 3-4 mal. Danach dauert es wieder 30 sekunden bis die daten geladen bzw angezeigt werden. Habe ich was vergessen ??? Muss ich irgendwas noch machen?? Füllt irgendwas meinen Arbeitsspeicher ??
Ich komme leider nicht auf denn Grund auf dieser Probleme ??
Bitte um hilfe
Danke
Indian
-
einen direkten tip kann ich dir jetzt nicht geben. vielleicht kannst du dir mal deine speicherauslastung im task manager angucken. würde mich mal interessieren
-
tja am anfang ist alles normal.. jedoch nach mehrere aufrufen erscheint der dialog nicht mehr und der folgende prozess (task manager)
devenv.exe ist ca 96% +-
d.h. Visual Studio Net fängt an CPU zu nutzen. Meinst du es hilft wenn ich vor dem schliessen des dialogs, den Inhalt von CListCtrl lösche mit
DeleteAllItems()
also ich denke das es ja nicht denn Arbeitsspeicher löscht oder ? Ausserdem sind alle variablen ja lokal. Sobald die Methode beendet ist existieren ja die Objekte nicht mehr. Genauso ist es ja mit den Dialogen. Ich binde zwar die Klassen ein jedoch diese werden auch beim aufruf in der Methode erzeugt und sollten doch nach beenden der Methode ja wieder gelöscht sein dasselbe ist das mit denn Objekten welchen denn Zugriff auf die SQL Datenbank haben und die nötigen Operationen ausführen.
-
Hallo!
Starte das Programm mal mit F5 und beende es ganz normal mit dem Kreuz.
Solltest du Memoryleaks haben, werden die nun angezeigt und du kannst auf die Suche gehen.Im Taskmanager kannst du dir ja mehr als nur die CPU Auslastung ansehen. Schalte doch mal ein paar mehr Spalten dazu, vielleicht erkennst du ja was.
-
ne, da haste recht. muss woanders dran liegen.
ich hatte solche probleme noch nicht, denke desswegen das es nicht am quellcode liegt. aber woran dann