Warum erhalte ich eine Ausnahme wegen zu wenig Speicher?C# Image.Clone Nicht genügend Speicher Ausnahme
So stirbt dies in C# auf das erste Mal durch:
splitBitmaps.Add (neededImage.Clone (rectDimensions, neededImage.PixelFormat));
Wo splitBitmaps ist eine Liste <BitMap> Das funktioniert aber in VB für mindestens 4 Wiederholungen:
arlSplitBitmaps.Add (Image.Clone (rectDimensions, Image.PixelFormat))
Wo arlSplitBitmaps ist eine einfache Array-Liste. (Und ja, ich habe Arraylist in C# versucht)
Dies ist fullsection:
for (Int32 splitIndex = 0; splitIndex <= numberOfResultingImages - 1; splitIndex++)
{
Rectangle rectDimensions;
if (splitIndex < numberOfResultingImages - 1)
{
rectDimensions = new Rectangle(splitImageWidth * splitIndex, 0,
splitImageWidth, splitImageHeight);
}
else
{
rectDimensions = new Rectangle(splitImageWidth * splitIndex, 0,
sourceImageWidth - (splitImageWidth * splitIndex), splitImageHeight);
}
splitBitmaps.Add(neededImage.Clone(rectDimensions, neededImage.PixelFormat));
}
neededImage ist ein Bitmap durch die Art und Weise.
Ich kann keine nützliche Antworten auf dem Intarweb finden, vor allem nicht, warum es in VB gut funktioniert.
Update:
Ich fand tatsächlich einen Grund (Art) für diesen Arbeits aber vergessen, es zu veröffentlichen. Es hat damit zu tun, das Bild in eine Bitmap zu konvertieren, anstatt nur das rohe Bild zu klonen, wenn ich mich daran erinnere.
Zweifel, es ist Speicher, sprengt das erste Mal durch. –
Yeah Bitmap .Dispose hat nach meiner Erfahrung keine Auswirkungen auf diese OOM-Ausnahmen. –