Speicherleck Problem mit MDI

cosmochaosmaker hat gesagt.:
Hallo MFC openGL!
Bestimmt beim zigmalen neu instanzieren der MDI Childs.
Den GC händisch anzukurbeln kann auch in manchen Fällen fatal sein.
Da scheinst du recht zu haben... Aber die Forms sind noch leer, und das muss doch gehen das der da mal richtig aufräumt :( Es bleiben immer ein paar KB im Speicher, und das summiert sich echt schnell wenn das Programm gerade mal 5 min genutzt wird, dann ist schon fast hängen im Schacht.

cosmochaosmaker hat gesagt.:
Das ganze sieht für mich nach einer Art Verkaufs/Bestandssoftware aus.
Sieht nicht nur so aus, solls auch werden ;)
Hat mich das Verkaeufer oder das Artikelsuchen verraten ? :)

cosmochaosmaker hat gesagt.:
Ich denke nicht das Du jedes einzelne Form in zig varianten neu instanziert werden muss, oder?
Leg sie in einem ControlArray ab. Eine Funktion, der Du den Typ des gewünschen MDI Childs mitgibst,
könnte dann zB das gewünschte MDI Child anzeigen.
Letzendlich hast ja eh irgendwelche Funktionen in deinen MDI Childs implementiert,
denen Du die Daten übergibst, welche angezeigt werden sollen.
Versuch also alles wiederzuverwenden, sofern Du es nicht mehrmals brauchst.
Du weisst schon... ;)

MfG, cosmo

Dann könnte ich auch einfach jedes neue Form einmal als Static speichern und dann bei bedarf aufrufen... Frage nur ob das so toll ist, da ja dann der ganze Speicher für alle Forms reserviert werden muss (Denke bei dem ControlArray wird das identisch sein...ODER ?) Schaue mir das aber morgen mal in der MSDN an, und dann mal gucken... erstmal Danke.

Aber wenn das nicht mit dem MDI so geht, dann werd ich das wohl in kauf nehmen müssen, egal obs mir gefällt oder nicht. Ein Prog was seinen Speicher verballert kann ich nicht brauchen, und schon garnicht verkaufen ;)


Gruß

MFC OpenGL


PS : Ab wann bekommt man den ForumStatus "Bitch Control Unit" ? Den will ich auch bekommen *ggg*
 
MFC openGL hat gesagt.:
Sieht nicht nur so aus, solls auch werden ;)
Hat mich das Verkaeufer oder das Artikelsuchen verraten ? :)
Was denn sonst. :p
MFC openGL hat gesagt.:
Dann könnte ich auch einfach jedes neue Form einmal als Static speichern und dann bei bedarf aufrufen... Frage nur ob das so toll ist, da ja dann der ganze Speicher für alle Forms reserviert werden muss (Denke bei dem ControlArray wird das identisch sein...ODER ?) Schaue mir das aber morgen mal in der MSDN an, und dann mal gucken... erstmal Danke.
Denk mal bitte logisch. Ob nun alles nacheinander instanziert wird und wieder händisch zerstört wird,
macht absolut keinen Unterschied weil der GC eh erst wartet bist er meint die Speicherleichen zu erntfernen.
Ergo hast im Endeffekt mehr Speicherverbrauch. Und durch das neu Instanzieren auch noch mehr,
weil das Instanzieren ansich auch ne Menge Müll im Speicher verursacht.
Hast alles schon fertig instanziert und verwendest die MDI Forms einfach wieder
oder hast sie besser sogar in statischer Form, wirst sicher keine Probleme mehr haben.
Ein weiterer Vorteil ist, dass die Forms SOFORT angezeigt werden.
MFC openGL hat gesagt.:
Aber wenn das nicht mit dem MDI so geht, dann werd ich das wohl in kauf nehmen müssen, egal obs mir gefällt oder nicht. Ein Prog was seinen Speicher verballert kann ich nicht brauchen, und schon garnicht verkaufen ;)
Es geht alles. ;) Nur gewusst wie ist die Kunst. :p
Das ControlArray mit den MDI Childs könntest zB im MDI Container unterbringen.
Dann solltest keine Probleme haben darauf zuzugreifen.
MFC openGL hat gesagt.:
PS : Ab wann bekommt man den ForumStatus "Bitch Control Unit" ? Den will ich auch bekommen *ggg*
Na dann musst noch einige Bitches klar machen. Fotos machen und Dich für den Bitch Control Unit Status bei tutorials.de anmelden.
Vorraussetzung sind aber mindestens 200 Fotos :suspekt:

LOL, nee Spaß. Das ist mein alter Zocker Clan.
Aber der Status ansich trifft auch in gewisser Hinsicht zu.... :eek: :D

MfG, cosmo
 
Wie gesagt, werde da morgen mal wegen dem ControlArray schaun, dann hack ich das mal rein und teste das...

Btw :

Denk mal bitte logisch. Ob nun alles nacheinander instanziert wird und wieder händisch zerstört wird,
macht absolut keinen Unterschied weil der GC eh erst wartet bist er meint die Speicherleichen zu erntfernen.
Ergo hast im Endeffekt mehr Speicherverbrauch

Das macht auch keinen Sinn...Das ist komplett gegensätzlich, wie mir das scheint...Aber kann auch schon sein das ich zu müde bin, morgen werd ich mehr wissen *g*

Thx schonmal...

Gruss

MFC OpenGL @ Bitch Control Unit 2
 
Hmm, cosmo...

habe gerade in der MSDN gesucht, aber dort findet man nur ein Array von Controls (Buttons und co) denke ja mal nicht das dort auch Forms reinkommen, oder ?
Codeguru hat 0 treffer, meine lokale MSDN ebenfalls 0 :(

Kannst du nem Dummen wie mir nen Beispiel geben ?
Wie soll ich das Form da rein abspeichern ? In einen Container ?

Gruss

MFC OpenGL
 
Ich meinte das Du dir einfach ein ControlArray anlegst.
Code:
Control[] mdiChildArray = new Control[ MDI_CHILD_COUNT ];
Darin legst die MDI Childs ab und zeigst dann das ausgewählte MDI Child an.
Code:
mdiChildArray[ VERKÄUFER_FORM_INDEX ].MdiParent = this
Du könntest auch eine Containerklasse für hernehmen in der sich die Forms befinden.
Würde aber keinen Sinn machen weil das dann IMO einem Mehraufwand an Implementationsarbeit bedeuten würde,
wenn Du mit allen MDI Childs etwas machen müsstest.
Du konntest dann einfach durch das Array iterieren. ;)

:offtopic:
Jetzt hab ich wohl einen neuen Bitch Control Unit Mitstreiter gefunden. :D
Du weisst was das bedeutet. Wir werden uns demnächst mal messen müssen, ;)
Mal schauen ob Du dem Titel gerecht werden kannst. :p :D
Melde mich diesbezüglich demnächst mal bei Dir wenn ich dafür Zeit habe, was zZ leider nicht der Fall ist. :(
--> Projektstress

LG, cosmo
 
Mit
Code:
foreach ( Form mdiChild in mdiChildArray )
könntest einfach durch die MDI Childs iterieren.
Denke mal ich erzähl Dir da jetzt nichts neues. :p
Oder Du verwendest ein FormArray damit Du beim indizierten Zugriff nicht casten musst,
könntest aber keine Controls anderen Typs in dem Array ablegen.
Ist Dir überlassen...

:offtopic:
Realistische Rennspiele alá Live for Speed zB (wenn Du dich traust, ich zocke sowas schon 9 Jahre ;) :D ).
Eher mein Fall. :)
Oder einen gepflegten Taktik/Kriegs Shooter. Denke mal eher dein Fall?

MfG, cosmo
 
Zunächst mal, das mit dem foreach das war schon klar ;)
Habe aber mometan an anderen Probs zu knabbern, und da der Bug momentan noch nicht sooo schlimm ist, lass ich das noch bis Freitag so, dann werd ich mich der Sache widmen *g*


:offtopic:
Und auf Autorennen am PC stehe ich nicht so, aber wenn du vorbeikommst kann dein Trabbi ja mal zeigen wieviel in Ihm steckt *löl*

Und wie kommst du darauf das ich Shooterfan bin ?

Ich stehe auf WISU's und Strategiespiele, ab und an auch mal CSS, aber das wars dann auch...


Gruß

MFC OpenGL @ Bitch Control Unit 1 abziehen werd...
 
Dachte es war Dir wichtig. Hajo egal, sag bescheit wenn es dann immer noch Probleme geben sollte.

:offtopic:
Ich hab nur geraten weil ich net viele kenn die professionell Autorennen zocken.
Sorry aber ich find nichts an Strategiespielen. Die sind irgendwie sinnlos.
Du mehrst tagelang rum, damit Du mal ein Ergebnis siehst. :suspekt:
Wenn ich vor allem den ganzen Tag programmiert hab,
währe das Allerletzte mich auch noch auf ein Stragegiespiel zu konzentrieren.
Danach hab ich echt keinen Nerv für. Ich brauch Action und das gnadenlos.
Eine Bitch Control Unit steht nun mal auf Action. :-)
Du wirst dem Titel wohl doch nicht gerecht... ;-]
Beim CSS hast evtl noch ne Chance. :p :-)

So, das war jetzt genug OT in dem Thread, find ich. Alles weitere mach'mer via PN aus, ok.
Der Alex sieht sowas nicht gerne... :-(

MfG, cosmo
 
Zurück