Ich versuche einen Schnappschuss des gesamten Bildschirms zum Lesen von Pixelwerten zu erstellen. Eigentlich mache ich das ohne Probleme. Aber nach genau 214 Snapshots bekomme ich eine Ausnahme vom Speicher.C# Bitmap/Grafikspeicher
Bitmap ScreenShot = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
Screen.PrimaryScreen.Bounds.Height);
public Bitmap TakeSnapshot()
{
Graphics graphic = null;
Rectangle rect = new Rectangle(0, 0, Screen.PrimaryScreen.Bounds.Width,
Screen.PrimaryScreen.Bounds.Height);
using (graphic = Graphics.FromImage(ScreenShot))
{
graphic.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y,
0, 0,
ScreenShot.Size,
CopyPixelOperation.SourceCopy);
}
return ScreenShot.Clone(rect,System.Drawing.Imaging.PixelFormat.Format32bppArgb);
}
Ich benutze diese Methode mit Timer
Bitmap bmp = TakeSnapshot();
var c = bmp.GetPixel(0,0);
Es wurde ungültiger Parameter Ausnahme geben. Ich habe es mit "using" gelöst. Aber jetzt bin ich auf dieser Ausnahme fest.
Klingt wie Sie ein 32-Bit-Prozess und Abkratzen der 2 GB Grenze laufen. Warum brauchen Sie all diese Snapshots zusammen im Speicher? Entsorge diejenigen, die du nicht mehr brauchst. – Rotem
Ähnlichkeiten: http://stackoverflow.com/questions/4318563/c-sharp-out-of-memory-when-creating-bitmap –
Verfügen Sie über die Bitmap selbst, nachdem Sie damit fertig sind? –