Criação contínua de bitmaps leva a vazamento de memória

Eu tenho um segmento que continuamente gera bitmaps e leva uma captura de tela da janela de outro programa. Agora, eu tenho um pictureBox no meu formulário, e isso está sendo constantemente atualizado com os bitmaps gerados. Aqui está o código que eu tenho no tópico:

        Bitmap bitmap = null;

        while (true)
        {
            if (listBoxIndex != -1)
            {
                Rectangle rect = windowRects[listBoxIndex];
                bitmap = new Bitmap(rect.Width, rect.Height);
                Graphics g = Graphics.FromImage(bitmap);
                IntPtr hdc = g.GetHdc();
                PrintWindow(windows[listBoxIndex], hdc, 0);
                pictureBox1.Image = bitmap;
                g.ReleaseHdc(hdc);
            }
        }

Como você pode ver, isso leva a um vazamento de memória, devido à chamada contínua para o novo Bitmap (rect.Width, rect.Height). Eu tentei adicionar "bitmap.Dispose ()" na parte inferior do loop while, mas isso faz com que a imagem do pictureBox também seja descartada, o que faz um gigante X vermelho no lugar da imagem real. Existe alguma maneira que eu possa dispor de "bitmap" sem dispor da imagem pictureBox?

questionAnswers(2)

yourAnswerToTheQuestion