WPF: CreateBitmapSourceFromHBitmap()에서 메모리 누수
WPF 애플리케이션에서 CreateBitmapSourceFromHBitmap()
를 반복적으로 사용하면 메모리 누수가 발생할 수 있습니다. 이 문제는 CreateBitmapSourceFromHBitmap()
에서 사용하는 기본 GDI 비트맵이 올바르게 해제되지 않았기 때문에 발생합니다.
이 메모리 누수를 해결하려면 gdi32.dll
라이브러리의 DeleteObject()
메서드를 사용하여 GDI 비트맵을 수동으로 해제해야 합니다. GDI 비트맵을 해제하기 위해 Bitmap
메서드를 자동으로 호출하는 using()
문으로 Dispose()
개체를 래핑하면 이를 수행할 수 있습니다. 업데이트된 코드는 다음과 같습니다.
<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>
using
문을 사용하고 DeleteObject()
을 명시적으로 호출하면 GDI 비트맵을 해제하고 메모리 누수를 방지할 수 있습니다. 이렇게 하면 반복적으로 호출하더라도 메모리가 올바르게 해제됩니다.
위 내용은 WPF: CreateBitmapSourceFromHBitmap()을 사용할 때 메모리 누수를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!