I've made the changes you've shown me but I'm still leaking memory.
Here is a snippit of code form my app - this is running at 30fps and I
update whenever I receive a new frame from my Video Camera
using( System.Drawing.Bitmap bmp = IMGManager.MainBitmap )
if (vidMain.Fill == null)
vidMain.Fill = new
IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()));
ImageBrush bmpSrc = vidMain.Fill as ImageBrush;
BitmapSource bsrc = bmpSrc.ImageSource as BitmapSource;
bsrc = null; //no dispose method.. how do i clean up?
IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
I see a post on the MSDN forums quoting a simmilar issue - Our issue is
there is no visible way of manually disposing of the interopbitmapsouce
> You are likely leaking HBITMAPs. Are you doing something like this:
> BitmapSource bmpSrc = null;
> using(System.Drawing.Bitmap bmp = ...)
> bmpSrc = System.Windows.Interop.CreateBitmapSourceFromHBitmap(bmp.GetHbitmap(),...);
> If not, then you're leaking HBITMAPs from the System.Drawing.Bitmap. Those need to be disposed after using them.
> -----Original Message-----
> From: King Adrock
> Posted At: Monday, July 24, 2006 4:31 PM
> Posted To: microsoft.public.windows.developer.winfx.avalon
> Conversation: BitmapSource Disposal/cleanup
> Subject: BitmapSource Disposal/cleanup
> I have a dispatchtimer pulling System.Drawing.Bitmap Images from my
> webcam and I am displaying them on my WPF UI. I am using a
> BitmapSource created by CreateBitmapSourceFromHBitmap using the
> .GetHbitmap() method from my Bitmap object.
> I am getting some serious memory leaks - besides setting my ImageSource
> to null before assinging a new BitmapSource to it, is there anyway I
> can dispose of the object?