2012-08-08 41 views
0

良好的一天,每个人都“更新”,的XNA Game堆栈溢出错误之后调用

我已经建立一个跨平台的框架/抽象层对定位到Android,iOS和Windows Phone利用单7和XNA框架适当的平台。我没有使用ExEn,MonoGame或类似的框架,尽管我从研究他们的方法中学到了很多东西。

框架的XNA部分扩展的XNA Game类的,我敢肯定这是哪里出现问题。然而,我有一些困难,并且对XNA Game类更了解的人可能会有很大的帮助。我不会为整个继承层次结构的类岗位代码,因为它会占用一定的空间,而是我会要求有关在的XNA Game类的问题的可能来源的信息,这可能会导致我发现我的错误。

运行测试游戏时我收到一个堆栈溢出异常。完全的例外是:

An unhandled exception of type 'System.StackOverflowException' occurred in Microsoft.Xna.Framework.Game.dll 

为了追踪罪魁祸首,我一直在输出一些简单的调试语句到控制台。我得到的输出是:

Started init. 
Started linear load. 
Loading a texture... 
Finished loading a texture... 
Finished linear load. 
Finished init. 
Begin run called. 
Begin run ended successfully. 
Started update. 
Ended update. 

Process is terminated due to StackOverflowException. 

正如你所看到的,它成功完成更新,但没有继续要么BeginDraw或EndRun。我一直无法确定此时可能发生哪些进程,以导致堆栈溢出异常。

如果有人可能是在确定可以在这一点上存在的过程中提供援助,这无疑会在发现问题的来源十分有帮助。如果你会更舒服检查代码,我当然可以提供它,我毫不犹豫地这样做,因为我相信我能确定更多信息的问题,并了解这一问题所需的代码库可能被证明相当大。

感谢您的时间和帮助,请让我知道是否可以提供更多有用的信息。

+1

您可以检查异常的堆栈跟踪(或者将其粘贴在你的问题)? – 2012-08-08 01:30:45

+0

虽然非常可耻,但我忘记了我可以禁用“我的代码”功能并检查问题的根源。奇怪的是,它似乎在调用OnActivated ad-infinitum。 – 2012-08-08 01:34:09

回答

2

解决方案

原来OnActivated被反复称为我的,而愚蠢的步骤的结果很明显,追平了事件处理方法,对事件本身,从而创建自来回切换的无限循环。

感谢

由于去Illian平松对此很有帮助,如有明显的意见,即抢购我的脑子出任何Android的发展引起的,它已进入了昏迷状态。