Pourquoi le Close d'une frm ne libère pas la mémoire vive?
amoniaque
Messages postés20Date d'inscriptionvendredi 23 novembre 2007StatutMembreDernière intervention 7 avril 2009
-
7 avril 2009 à 09:46
amoniaque
Messages postés20Date d'inscriptionvendredi 23 novembre 2007StatutMembreDernière intervention 7 avril 2009
-
7 avril 2009 à 14:34
Bonjour,
Je développe une application sur laquelle il y a plusieurs frm. Je passe de l'une à l'autre au cours de l'utilisation de l'appli.
Au démarrage c'est la fenêtreA qui s'ouvre et la mémoire vive utilisée est de 45Mo.
Lorsque je passe de la fenêtreA à la fenêtreB j'utilise un fenêtreB.Show puis un fenêtreA.Hide. A ce moment là la mémoire vive utilisée est de 80Mo.
Si je veux revenir sur la fenêtreA je fais un fenêtreA.Show et un fenêtreB.Close et dans ce cas la mémoire vive reste toujours à 80Mo ! (dans la logique des choses, un Close aurait du libérer ce qui avait été utilisé!).
Pour compliquer le tout, si je fais de nouveau un accès à la fenêtreB alors la mémoire vive augmentera de 15Mo ...
En continuant de cette manière, la mémoire vive risque vite d'être saturée et (ça m'est déjà arrivé une fois) de provoquer un OutOfMemory.
Qu'est ce que je peux ou dois faire pour libérer la mémoire non utilisée d'une frm qui est fermée?
Cordialement,
Julien
A voir également:
Pourquoi le Close d'une frm ne libère pas la mémoire vive?
amoniaque
Messages postés20Date d'inscriptionvendredi 23 novembre 2007StatutMembreDernière intervention 7 avril 2009 7 avril 2009 à 11:07
Bonjour,
C'est ce que j'ai fait :
Public Class FenêtreA
Private Sub butShowFenetreB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butShowFenetreB.Click
FenêtreB.Show()
End Sub
Private Sub butCloseFenetreB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butCloseFenetreB.Click
FenêtreB.Close()
FenêtreB.Dispose()
End Sub
End Class