我有一個函數,它將一個對象列表繪製到位圖上以創建一個粗略的地圖。代碼分析會拋出一條警告(CA2000),表示對象的drawPen不會沿着所有異常路徑進行處理。據我所知,它被放置在函數的末尾,並且沒有無法訪問的代碼可能會被忽略。在一次性對象上處理沒有正確調用
有誰知道爲什麼編譯器認爲它沒有正確處置?
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();
}
你不是異常處理,所以在處理筆之前你的應用可能會拋出,使用'var('使用(var drawpen = new Pen())'或者用try塊來包裝你的代碼,處置筆 – Charleh