10秒后发生未处理的异常错误,为什么?

时间:2015-07-02 17:06:47

标签: c# error-handling xna runtime-error

我的游戏运行10-15秒后,我一直收到以下警告/错误消息,这甚至发生在没有与游戏互动时:

  

未处理的类型' System.ComponentModel.Win32Exception'发生在System.Drawing.dll

中      

附加信息:操作成功完成

我想知道我是否需要调用Dispose()方法才能删除那些因为它们被加载而未被使用的对象,即使它们已从游戏世界中删除了?

我将所有对象存储为列表(如下所示)

class Items
{
    public static List<Obj> objList = new List<Obj>();

    public static void Initialize()
    {
        //The Player
        objList.Add(new Player(new Vector2(50, 50)));
        //The Enemies
        objList.Add(new Enemy(new Vector2(500, 400)));
        objList.Add(new Enemy(new Vector2(600, 200)));
        //The Collectibles 
        objList.Add(new BlueBall(new Vector2(300, 400)));
        objList.Add(new GreenBall(new Vector2(350, 100)));
        objList.Add(new OrangeBall(new Vector2(65000, 250)));
        objList.Add(new PinkBall(new Vector2(100, 400)));
        objList.Add(new RedBall(new Vector2(600, 400)));
        objList.Add(new YellowBall(new Vector2(500, 250)));

    }

然后我在Game1类中调用Items.Initialize

我目前还有一个碰撞方法,一旦一个物体与另一个碰撞就被调用,我认为这可能导致问题,但我不是100%。正如我的游戏所代表的那样,我目前只将对象状态设置为= alive = false;才能杀死&#39;将它们从屏幕上删除,这可以在下面看到一个显示玩家和敌人碰撞的例子:

 //Collision with enemy
            Enemy enemy = CheckCollisionAgainst<Enemy>();
            if (enemy != null)
            {
                gameOver.Play();
                alive = false;
            }

我现在一直坚持这个错误,并且无法找到阻止它发生的解决方案。正如我之前所说,它发生在游戏运行10-15秒后,所以在修复此错误之前我无法继续使用任何其他功能。

我感谢任何帮助和提前感谢。

1 个答案:

答案 0 :(得分:2)

我发现了一些有趣的信息,看起来像try catch不会为你做任何事情,因为它可能是你要求c#生成的图形数量。您必须降低显示图形的质量或减少代码中需要图形的对象数量,请参阅:

System.ComponentModel.Win32Exception: The operation completed successfully

好像你不是唯一有这个问题的人。

人们在具有相同的执行权之前通常具有高图形需求。优化代码就是您所需要的,管理减少游戏所需的内存并不是一项简单的任务。勇敢的朋友!

PS。从dispose()开始将是一个好主意;)