WPF:CreateBitmapSourceFromHBitmap() 中的記憶體洩漏
在 WPF 應用程式中,重複使用 CreateBitmapSourceFromHBitmap()
可能會導致記憶體洩漏。此問題發生的原因是 CreateBitmapSourceFromHBitmap()
使用的基礎 GDI 位圖未正確釋放。
為了解決此記憶體洩漏問題,必須使用 gdi32.dll
庫中的 DeleteObject()
方法手動釋放 GDI 位圖。可以透過將 Bitmap
物件包裝在 using()
語句中來實現此目的,該語句會自動呼叫 Dispose()
方法來釋放 GDI 位元圖。以下是更新後的程式碼:
<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中文網其他相關文章!