rbidocho
Messages postés41Date d'inscriptionjeudi 7 juin 2007StatutMembreDernière intervention15 septembre 2008
-
13 juin 2007 à 11:14
rbidocho
Messages postés41Date d'inscriptionjeudi 7 juin 2007StatutMembreDernière intervention15 septembre 2008
-
13 juin 2007 à 11:54
Bonjour,
ma config : Win XP SP1 .Net Framework 1.1
IDE et Programmation: SharpDevelop 1.1 en VB.NET
Mon petit souci :
Depuis mon MainForm, j'appelle une classe qui insère un UserControl (graphique en bmp dans un panel) dans mon MainForm.
Cet Appel peut se faire (et se fait) plusieurs fois.
Jusqu'ici pas de problème.
Le problème survient quand je veux supprimer le UserControl tout en libérant la mémoire :
voici le code (épuré) de la procédure qui est dans le MainForm
Public Sub Tracer()
'Effacement du UserControl si il existe
For Each Ctrl As system.Windows.Forms.Control In Me.tabPageCourbePolluants.Controls
If Ctrl.Name = "UcGraphXY" Then
Me.tabPageCourbePolluants.Controls.Ctrl.remove (Ctrl)
End If
Next
Dim UcG as UcGraphXY = new UcGraphXY
'lignes de contruction de mon UserControl
'Ajout du UserControl dans mon MainForm
Me.tabPageCourbePolluants.Controls.Add(UcG)
End Sub
Donc si j'ai bien compris, je ne fais que supprimer visuellement le UserControl mais cela ne libère pas la mémoire (Augmentation de 3MO à chaque appel).
Si vous avez une solution, je vous en remercie d'avance
RB
A voir également:
Problème de libération de mémoire avec un UserControl
cs_niky
Messages postés168Date d'inscriptionjeudi 28 juin 2001StatutMembreDernière intervention18 octobre 20087 13 juin 2007 à 11:32
Salut,
Si tu ajoutes Ctrl.Dispose juste à après l'appel à remove, tu demandes à ton objet de libérer les ressources non managées qu'il utilise. En surchargeant la méthode Dispose dans ton UserControl, tu peux aussi libérer tes propres objets (par exemple l'image bitmap).
La mémoire sera peut être libérée...
Sinon, comme .Net gère lui-même la mémoire, il se chargera bien à un moment de collecter ton objet.
Tu peux le forcer en appelant System.GC.Collect... mais c'est pas très recommandé.