データ コレクションをループし、データベースから取得したコレクション内のデータに基づいてビットマップを作成し、最後に、作成したビットマップを DoorSchedules と呼ぶコレクションに追加するメソッドがあります。
グラフィックスで .dispose を呼び出すと、ループでエラーが発生します。Graphics オブジェクトに属する .dispose メソッドを呼び出さないと、このエラーは発生しません。
ループ時にグラフィックス オブジェクトでいつ dispose を呼び出す必要がありますか?ループごとに新しいグラフィックス オブジェクトを作成する必要がありますか?
dc.Dispose のコメントを外すまで、コードは以下で機能します。
DoorSchedules schedules = new DoorSchedules();
for (byte i = 0; i < elevation.Bays.Count; i++)
{
if (elevation.Bays[i].HasDoor.Value)
{
for (byte ii = 0; ii < elevation.Bays[i].Doors.Count; ii++)
{
door = elevation.Bays[i].Doors[ii];
width = getInchPx(door.WidthInches);
height = getInchPx(door.HeightInches);
Bitmap canvas = new Bitmap((int)width + DOOR_SCHEDULE_WIDTH_ADD,
(int)height + DOOR_SCHEDULE_HEIGHT_ADD);
Graphics dc = Graphics.FromImage(canvas);
..work removed for readability for stackoverflow.
schedules.Add(new DoorSchedule(canvas));
//dc.Dispose();
};
};
};