Мне нужно написать игру на C#, используя форму Windows. Для моего метода рисования на моем экране, я получаю странный System.ObjectDisposedException, который нерестится на одном из моих графических объектов являются instantiated.Here является проблематичным кодом:System.ObjectDisposedException с графическим объектом
// Graphics variables.
Graphics graphics;
Graphics backBufferObject;
Bitmap backBuffer;
// Graphics and backBuffer are instantiated, elsewhere, in the constructor.
private void DrawScreen()
{
// Copy the BackBuffer to Graphics Object.
using (graphics = Graphics.FromImage(backBuffer))
using (backBufferObject = this.CreateGraphics())
{
// Draw BackBuffer to screen (buffer switching).
backBufferObject.DrawImage(backBuffer, 0, 0, this.Width, this.Height);
graphics.DrawImage(Properties.Resources.scary_pacman, new Rectangle(
this.Width/2 , this.Height/2, 32, 32));
graphics.Clear(Color.Thistle); // Clear BackBuffer for efficient rendering.
}
}
Проблематики линии, которая бросает систему. ObjectDisposedException - строка: using (backbufferObject = this.CreateGraphics())
. Я не уверен, почему это исключение выбрасывается в этой конкретной точке из-за того, что этот объект рестанируется в этот момент, тогда как он был расположен в конце скобок использования. До сих пор я пытался помещать эти две строки в операторы using
из-за того, что на них влияет IDisposable.
Возможно, было бы замечательно, что ошибка вызывается после Закройте форму Windows во время работы. Итак, почему этот объект Graphics удаляется в этом конкретном случае?
Полный код: http://pastebin.com/mSa6XCpP