Ich habe eine Funktion, die eine Liste von Objekten auf eine Bitmap zeichnet, um eine grobe Karte zu erstellen. Die Codeanalyse gibt eine Warnung aus (CA2000), die besagt, dass das Objekt "drawPen" nicht auf allen Ausnahmepfaden angeordnet ist. Soweit ich sehen kann, ist es am Ende der Funktion angeordnet und es gibt keinen Code, der nicht zugänglich ist.Dispose nicht korrekt auf Einweg-Objekt
Weiß jemand, warum der Compiler denkt, dass es nicht richtig entsorgt wird?
public void drawUpdates(List<areaObjects> objectLocations)
{
Rectangle areaToClone = new Rectangle(0, 0, writeOnceMap.Width, writeOnceMap.Height);
var pixelFormat = writeOnceMap.PixelFormat;
areaBitMap = writeOnceMap.Clone(areaToClone, pixelFormat);
Pen drawPen = new Pen(Color.Black, 2);
drawPen.Width = 2;
foreach(areaObjectsop2d in objectLocations)
{
int xPosition = (int)(op2d.XYZ.xPos * mapScale);
int yPosition = (int)(op2d.XYZ.yPos * mapScale);
Point[] crossMarker = getCrossShape(xPosition, yPosition);
using (var graphics = Graphics.FromImage(areaBitMap))
{
graphics.DrawPolygon(drawPen, crossMarker);
}
}
drawPen.Dispose();
}
Sie sind nicht Ausnahme so technisch App Umgang werfen könnte, bevor der Stift angeordnet ist, verwenden Sie 'mit (var drawpen = new Pen())' oder wickeln Sie den Code in einem Try-Catch mit einem finally-Block, dass verfügt über den Stift – Charleh