CreateBitmapSourceFromHBitmap()
WPF의 CreateBitmapSourceFromHBitmap()
은 System.Drawing.Bitmap
이미지를 WPF 애플리케이션에 통합하는 편리한 방법을 제공합니다. 그러나 잘못 사용하면 심각한 메모리 누수가 발생할 수 있습니다.
적절한 정리 없이 CreateBitmapSourceFromHBitmap()
을 반복적으로 호출하면 애플리케이션 메모리 소비가 꾸준히 증가합니다. 이는 System.Drawing.Bitmap
개체
메모리 누수를 방지하려면 CreateBitmapSourceFromHBitmap()
과 함께 사용한 후 GDI 비트맵 핸들을 명시적으로 삭제하세요. 다음 코드는 이 중요한 단계를 보여줍니다.
<code class="language-csharp">[DllImport("gdi32.dll")] public static extern bool DeleteObject(IntPtr hObject); 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()); // Use the 'source' BitmapSource here... } finally { DeleteObject(hBitmap); } }</code>
using
문은 예외가 발생하더라도 System.Drawing.Bitmap
이 올바르게 처리되도록 보장합니다.
System.Drawing.Bitmap
객체 전에 BitmapSource
객체를 삭제해야 합니다.Imaging.CreateBitmapSource()
을 선호하는 대안으로 사용해 보세요. 이 방법은 본질적으로 기본 비트맵 리소스를 관리하므로 수동 정리의 필요성을 없애고 메모리 누수 위험을 줄입니다.위 내용은 WPF의 CreateBitmapSourceFromHBitmap()을 사용할 때 메모리 누수를 방지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!