Windows Vista Forums

BitmapSource Disposal/cleanup
  1. #1


    King Adrock Guest

    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?




      My System SpecsSystem Spec

  2. #2


    robertwl@nospam.microsoft.com Guest

    re: BitmapSource Disposal/cleanup

    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?

      My System SpecsSystem Spec

  3. #3


    King Adrock Guest

    Re: BitmapSource Disposal/cleanup

    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
    ImageBrush(System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(bmp.GetHbitmap(),
    IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()));
    }
    else
    {
    ImageBrush bmpSrc = vidMain.Fill as ImageBrush;
    BitmapSource bsrc = bmpSrc.ImageSource as BitmapSource;
    bsrc = null; //no dispose method.. how do i clean up?
    bmpSrc.ImageSource =
    System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(bmp.GetHbitmap(),
    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

    http://forums.microsoft.com/MSDN/Sho...23409&SiteID=1


    robertwl@nospam.microsoft.com wrote:
    > 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?



      My System SpecsSystem Spec

BitmapSource Disposal/cleanup problems?

Similar Threads
Thread Thread Starter Forum Replies Last Post
Trojan cleanup. plugginaway Vista General 2 21 Aug 2009
Disk Cleanup Riptorn Crashes and Debugging 6 15 Aug 2009
Disk Cleanup Brink Tutorials 19 21 Jun 2009
Problem creating an BitmapSource from an HBitmap in threaded code Shaun Bedingfield .NET General 0 05 Mar 2008
How to put unmanaged CBitmap*->GetBitmapBits() into an BitmapSource-derivedclass MueMeister Avalon 1 04 Apr 2006