[VB 2008] Gebruik van geheugen datasource icm datagridview

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb dit moment een applicatie welke is gekoppeld aan een database.

Voor een bepaald scherm moet ik 30000 record in één keer ophalen en dit werkt op zich prima op de volgende manier:

code:
1
Me.RelatieTableAdapter.Fill(Me.dsRelatie.Relatie)


Dit staat achter de form load. De datagridview is gekoppeld aan dsRelatie.
Er wordt dus gewoon (simpel) een datasource gevuld en weergegeven in een datagridview.

Dit gaat dus goed, echter het probleem is dat er direct +- 100 MB aan geheugen gebruikt wordt. Dit zou op zich niet zo erg zijn als dit alleen bij het laden zou gebeuren, maar dit geheugen wordt 'vast' gehouden. Soms moet dit scherm meerdere keren worden opgestart en zo loop het geheugen dus snel op.

Ik heb het al geprobeerd met direct een clear te doen van de datasource na het laden van het form, maar dan is de datagridview (uiteraard) ook leeg. Ik kan wel een clear doen bij de formclosing maar dan wordt nog niet altijd het geheugen direct leeggemaak. Dit is dus eigenlijk ook geen oplossing, omdat het scherm dus soms meerdere keren tegelijk gestart wordt (dus is er ook geen formclose). Weet iemand hoe ik hier mee om kan gaan? Ik heb al heel wat gezocht en uitgeprobeerd (oa met de carbage collection (Gc.collect)), maar ik kom er niet uit hoe ik dit kan oplossen. Ben hier al heel wat tijd aan kwijt geweest, maar misschien kan iemand mij hier (op de goede weg) helpen.

Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 20:53

Haan

dotnetter

Onlangs was hier nog een vergelijkbaar topic over, misschien dat daar nog wat nuttige tips in staan :)

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • D-Raven
  • Registratie: November 2001
  • Laatst online: 10-09 20:32
Wellicht dat je eens moet gaan kijken naar de manier waarop je je data aan je grid bind. In plaats van alles te binden is het wellicht een mogelijkheid om alleen gegevens in te laden die je ook echt toont op dat moment. Ook wel "Load on demand".

zie Performance tuning Windows Forms DataGridView Control.

Op die manier kun je het geheugen load beperken.