Maison > développement back-end > C++ > WPF : Comment éviter les fuites de mémoire lors de l'utilisation de CreateBitmapSourceFromHBitmap() ?

WPF : Comment éviter les fuites de mémoire lors de l'utilisation de CreateBitmapSourceFromHBitmap() ?

Mary-Kate Olsen
Libérer: 2025-01-10 10:26:40
original
300 Les gens l'ont consulté

WPF: How to Prevent Memory Leaks When Using CreateBitmapSourceFromHBitmap()?

WPF : fuite de mémoire dans CreateBitmapSourceFromHBitmap()

Dans les applications WPF, l'utilisation répétée de CreateBitmapSourceFromHBitmap() peut provoquer des fuites de mémoire. Ce problème se produit car le bitmap GDI sous-jacent utilisé par CreateBitmapSourceFromHBitmap() n'est pas publié correctement.

Pour résoudre cette fuite de mémoire, le bitmap GDI doit être libéré manuellement à l'aide de la méthode gdi32.dll dans la bibliothèque DeleteObject(). Vous pouvez y parvenir en encapsulant l'objet Bitmap dans une instruction using(), qui appelle automatiquement la méthode Dispose() pour libérer le bitmap GDI. Voici le code mis à jour :

<code class="language-csharp">using System.Runtime.InteropServices;

...

using (System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(1000, 1000))
{
    IntPtr hBitmap = bmp.GetHbitmap();

    try
    {
        var source = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(hBitmap, IntPtr.Zero, Int32Rect.Empty, System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
    }
    finally
    {
        DeleteObject(hBitmap);
    }
}</code>
Copier après la connexion

Vous pouvez libérer un bitmap GDI et éviter les fuites de mémoire en utilisant l'instruction using et en appelant DeleteObject() explicitement. Cela garantit que la mémoire est libérée correctement même en cas d'appel répété.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal