C # problema de liberación de memoria picturebox

Soy un novato en C #. Tengo que actualizar repetidamente un cuadro de imagen GUI en un subproceso de trabajo. La imagen se obtiene de una cámara que sondea un controlador con un método GetImage que recupera la imagen que se mostrará. Incluso si asigno el mapa de bits utilizando la directiva "utilizando" y llamo explícitamente a G.C, la memoria parece que nunca se desasigna.

El hilo de trabajo es algo como esto:

   while (true)
    {
        // request image with IR signal values (array of UInt16)
        image = axLVCam.GetImage(0);
        lut = axLVCam.GetLUT(1);
        DrawPicture(image, lut);
        //GC.Collect();

    }

Mientras que el método DrawPicture es algo así como

   public void DrawPicture(object image, object lut)
{

  [...]

    // We have an image - cast it to proper type
    System.UInt16[,] im = image as System.UInt16[,];
    float[] lutTempConversion = lut as float[];

    int lngWidthIrImage = im.GetLength(0);
    int lngHeightIrImage = im.GetLength(1);

    using (Bitmap bmp = new Bitmap(lngWidthIrImage, lngHeightIrImage)) {

      [...many operation on bitmap pixel...]

        // Bitmap is ready - update image control

        //SetControlPropertyThreadSafe(tempTxtBox, "Text", string.Format("{0:0.#}", lutTempConversion[im[160, 100]]));

        //tempTxtBox.Text = string.Format("{0:00000}", im[160, 100]);
        //System.Drawing.Image.FromHbitmap(bmp.GetHbitmap());
        pic.Image = System.Drawing.Image.FromHbitmap(bmp.GetHbitmap());
    }
}

Surgen problemas con el

pic.Image = System.Drawing.Image.FromHbitmap (bmp.GetHbitmap ());

De hecho, al comentar esa línea de código, la recolección de basura funciona como lo haría. Mejor, el problema parece estar con

System.Drawing.Image.FromHbitmap (bmp.GetHbitmap ())

¿Algún consejo para solucionar esta pérdida de memoria?

¡Muchas gracias!

Respuestas a la pregunta(3)

Su respuesta a la pregunta