源代码:(还有一堆没用的,没贴)
namespace Sprite_Demo
{
    public partial class Form1 : Form
    {
        private bool p_gameOver = false;
        private int p_startTime = 0;
        private int p_currentTime = 0;
        public Game game;
        public Bitmap dragonImage;
        public Sprite dragonSprite;
        public Bitmap grass;
        public int frameCount = 0;
        public int frameTimer = 0;
        public float frameRate = 0;
        public PointF velocity;
        public int direction = 2;
        private void Form1_Load(object sender, EventArgs e)
        {
            Main();
        }
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            Game_KeyPressed(e.KeyCode);
        }
        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            Shutdown();
        }
        public void Main()
        {
            Form form = (Form)this;
            game = new Game(ref form, 800, 600);
            //load and initialize game assets
            Game_Init();
            while (!p_gameOver)
            {
                //update timer
                p_currentTime = Environment.TickCount;
                //let gameplay code update
                Game_Update(p_currentTime - p_startTime);
                //refresh at 60 FPS
                if (p_currentTime > p_startTime + 16)
                {
                    //update timing
                    p_startTime = p_currentTime;
                    //let gameplay code draw
                    Game_Draw();
                    //give the form some cycles
                    Application.DoEvents();
                    //let the game object update
                    game.Update();
                }
                frameCount += 1;
                if (p_currentTime > frameTimer + 1000)
                {
                    frameTimer = p_currentTime;
                    frameRate = frameCount;
                    frameCount = 0;
                }
            }
            //free memory and shut down
            Game_End();
            Application.Exit();
        }    }
}

解决方案 »

  1.   

    楼主,WinForm一般不会包这个错误,Dispose方法由系统释放资源是自动调用!
    MSDN上面是这样说明的:此方法由公共方法 Dispose 和 Finalize 方法调用。Dispose 调用 disposing 参数设置为 true 的受保护方法 Dispose(Boolean)。Finalize 调用 disposing 设置为 false 的 Dispose 的方法。当 disposing 参数为 true 时,此方法释放该 Form 引用的、由任何托管对象持有的全部资源。此方法调用每个引用对象的 Dispose 方法。给继承者的说明 Dispose 可以由其他对象多次调用。重写 Dispose(Boolean) 时,请注意不要引用在以前调用 Dispose 时已释放的对象。你看看你的Shutdown(),Game_End()函数有没有做特殊处理。
    你可以试作把一些代码屏蔽,逐步缩小范围,直至最后确定问题点!