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 中国語 Web サイトの他の関連記事を参照してください。