0

今天是个好日子,

我一直在构建一个跨平台框架/抽象层,以利用适当平台上的 Mono 和 XNA 框架来定位 Android、iOS 和 Windows Phone 7。我没有使用 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。我一直无法确定此时可能会发生哪些进程以导致堆栈溢出异常。

如果有人可以帮助确定此时可能发生的过程,那么无疑将有助于找到问题的根源。如果您更愿意检查代码,我当然可以提供它,我会犹豫这样做,因为我相信我可以通过更多信息来确定问题,并且理解问题所需的代码库可能会非常大。

感谢您的时间和帮助,如果我能提供更多有用的信息,请告诉我。

4

1 回答 1

2

解决方案

事实证明 OnActivated 被反复调用是由于我相当愚蠢的一步,显然,将事件处理方法与事件本身联系起来,从而创建了一个无限循环的自切换。

谢谢

感谢 Illian Pinzon 提供的这个有用的建议,如果显而易见的话,它让我的大脑从任何 Android 开发引发的昏迷状态中解脱出来。

于 2012-08-08T01:38:08.553 回答