Bonjour a tous,
Voila j'ai un programme qui fait ceci:
au passage de la souris sur le "notifyicon", j'affiche une fenetre. Dans ce fenetre j'affiche une capture d'ecran.
Pour réaliser la capture je m'appuie sur des fonction Win32 tel que BitBlt. Je libere correctement mes resources grace a DeleteDC, ReleaseDC et DeleteObject. Le probleme survient lorsque je charge l'image dans un type image grace à:
Dès lors que j'appelle cette fonction mon programme prend facilement 8Mo de plus en mémoire. Par la suite ma fonction qui retourne cette image l'affiche dans une picturebox:
Code : Sélectionner tout - Visualiser dans une fenêtre à part Image img = Image.FromHbitmap(hBitmap);
Et comme j'appelle ce code a chaque fois que j'affiche ma fenetre, il me prend environ 8Mo de plus à chaque fois sans arret.
Code : Sélectionner tout - Visualiser dans une fenêtre à part myPictureBox.Image = CaptureEcran();
j'ai donc pensé que si je faisais un:
cela aurait libéré les ressources avant de charger la nouvelle image, mais en fait cela n'a aucun impact semble t-il.
Code : Sélectionner tout - Visualiser dans une fenêtre à part myPicture.Image.Dispose()
Pourriez m'indiquer quelle est la manip ou à quoi est du ceci? Est-on obligé d'attendre que le GC libere la memoire, et dans ce cas c'est bete qu'une appli ou j'ai qu'une image a afficher me prenne 100Mo en mémoire a terme non?
Je pense qu'il y a quelquechose a faire mais j'ai beua chercher je ne vois pas de solution efficace.
Merci d'avance.
Partager