debugging CPU-Auslastung nach Programmende

26/10/2011 - 10:14 von Reiner Wolff | Report spam
Moin moin,

ich habe vor Ewigkeiten (zuletzt geàndert am 10.01.2010) eine Erweiterung
zum VSFlexGrid von ComponentOne geschrieben, welche das Grid um diverse
Funktionalitàten nachrüstet, die ich in diversen Andwendungen benutze.
Die Erweiterung ist ausgelagert in eine eigenstàndige DLL.

U.a.habe ich das Grid um eine Cells-Auflistung erweitert, die jedes
Zell-Objekt in einer dhRichClient3.cCollection abspeichert.

Nun passiert es, dass beim Beenden des Programmes die CPU-Auslastung auf
50% (dual-core-System Auslastung aber über beide Cores verteilt) hochgeht
und das Programm nicht vernünftig beendet wird. Das Anwendungsfenster
selbst ist zwar geschlossen, aber der Prozess verbleibt im TaskManager.

Nach langem Debugging meine ich nun herausgefunden zu haben, dass das
Problem immer Auftritt, wenn ich auf meine Cells-Auflistung zugreife.

Da das Problem allerdings nur im Kompilat und *nach* meiner letzten
Programmzeile auftritt, weiß ich nicht, wo ich noch weiter mit dem
Debugging ansetzen kann.

Nun hoffe ich, dass hier jemand mir eine Vorgehensweise empfehlen kann.
Vielleicht hat ansonsten auch jemand eine Cells-Auflistungsvariante für ein
Grid parat, dass vielleicht besser funktioniert als meine Variante?

Ich komme grad nur noch auf so schöne Ideen wie 'Starte einen Prozess, der
nach ein paar Sekunden überprüft, ob meine Anwendung sich beendet hat und
falls nicht den Prozess hart beendet.', hàtte aber gerne eine saubere
Lösung.

Vielen Dank für Eure Unterstützung
Gruß aus Kiel
Reiner Wolff
 

Lesen sie die antworten

#1 W. Wolf
26/10/2011 - 16:53 | Warnen spam
Am 26.10.2011 10:14, schrieb Reiner Wolff:
Moin moin,

ich habe vor Ewigkeiten (zuletzt geàndert am 10.01.2010) eine Erweiterung
zum VSFlexGrid von ComponentOne geschrieben, welche das Grid um diverse
Funktionalitàten nachrüstet, die ich in diversen Andwendungen benutze.
Die Erweiterung ist ausgelagert in eine eigenstàndige DLL.



So was verwende ich auch. Darüber hinaus fange ich bestimmte Grid-Events
in meiner Zusatzklasse ab. Dafür ist das Grid in der Klasse
referenziert. Ich hatte das Problem, dass es zum Crash kommt, wenn beim
Beenden der Anwendung der Gridverweis nicht (davor) aufgehoben wurde.
Würde mal sagen, einen Versuch ist es wert alle Referenzen vor dem
Beenden freizugeben, also in Deinem Fall die Collection zu leeren.

Noch eine Frage: Warum eine Collection auf die Zellen? Die kann man auch
wunderbar in einer Schleife durchlaufen oder gezielt über
vsFlexGrid.Cell(Setting As CellPropertySettings, [R1 As Long], [C1 As
Long], [R2 As Long], [C2 As Long]) ansprechen.


Schönen Gruß
W. Wolf

Ähnliche fragen