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?