2012-08-08 40 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的發展引起的,它已進入了昏迷狀態。