簡體   English   中英

流氓異常,System.InvalidOperationException,XNA

[英]Rogue Exception, System.InvalidOperationException, XNA

我的xna游戲具有此“流氓” System.InvalidOperationException,該異常僅偶爾發生,並且似乎是隨機觸發的,或者至少是出於我的控制輸入明智的觸發。 在按開始並加載第一個菜單屏幕后,( 有時我會使用GameStateManagement示例作為我的游戲的基礎,如果有幫助的話)游戲有時但並非總是在“ foreach(GameScreen屏幕)的“ in”部分拋出System.InvalidOperationException在屏幕上)“該方法的完整代碼:

            /// <summary>
    /// Tells each screen to draw itself.
    /// </summary>
    public override void Draw(GameTime gameTime)
    {

        foreach (GameScreen screen in screens) //exception thrown at the "in" part
        {
            if (screen.ScreenState == ScreenState.Hidden)
                continue;

            screen.Draw(gameTime);
        }
    }

老實說,對於觸發該異常的原因一無所知,因為我沒有做任何與何時引發異常以及何時沒有引發異常的事情。 我不確定是否能幫到您,但這是例外情況詳細信息

   at System.Collections.Generic.List`1.Enumerator.MoveNext()
   at GameStateManagement.ScreenManager.Draw(GameTime gameTime)
   at Microsoft.Xna.Framework.Game.Draw(GameTime gameTime)
   at GameStateManagement.GameStateManagementGame.Draw(GameTime gameTime)
   at Microsoft.Xna.Framework.Game.DrawFrame()
   at Microsoft.Xna.Framework.Game.Tick()
   at Microsoft.Xna.Framework.Game.HostIdle(Object sender, EventArgs e)
   at Microsoft.Xna.Framework.GameHost.OnIdle()
   at Microsoft.Xna.Framework.XboxGameHost.RunOneFrame()
   at Microsoft.Xna.Framework.XboxGameHost.Run()
   at Microsoft.Xna.Framework.Game.RunGame(Boolean useBlockingRun)
   at Microsoft.Xna.Framework.Game.Run()
   at GameStateManagement.Program.Main()
}   System.Exception {System.InvalidOperationException}

這是調用堆棧:

>   GameStateManagementSample.exe!GameStateManagement.ScreenManager.Draw(Microsoft.Xna.Framework.GameTime gameTime) Line 338 + 0x33 bytes   C#
Microsoft.Xna.Framework.Game.dll!Microsoft.Xna.Framework.Game.Draw(Microsoft.Xna.Framework.GameTime gameTime) + 0x4d bytes  
GameStateManagementSample.exe!GameStateManagement.GameStateManagementGame.Draw(Microsoft.Xna.Framework.GameTime gameTime) Line 89 + 0x7 bytes   C#
Microsoft.Xna.Framework.Game.dll!Microsoft.Xna.Framework.Game.DrawFrame() + 0x6a bytes  
Microsoft.Xna.Framework.Game.dll!Microsoft.Xna.Framework.Game.Tick() + 0x2a9 bytes  
Microsoft.Xna.Framework.Game.dll!Microsoft.Xna.Framework.Game.HostIdle(object sender, System.EventArgs e) + 0x6 bytes   
Microsoft.Xna.Framework.Game.dll!Microsoft.Xna.Framework.GameHost.OnIdle() + 0x19 bytes 
Microsoft.Xna.Framework.Game.dll!Microsoft.Xna.Framework.XboxGameHost.RunOneFrame() + 0xc bytes 
Microsoft.Xna.Framework.Game.dll!Microsoft.Xna.Framework.XboxGameHost.Run() + 0x1b bytes    
Microsoft.Xna.Framework.Game.dll!Microsoft.Xna.Framework.Game.RunGame(bool useBlockingRun) + 0x9c bytes 
Microsoft.Xna.Framework.Game.dll!Microsoft.Xna.Framework.Game.Run() + 0x7 bytes 
GameStateManagementSample.exe!GameStateManagement.Program.Main() Line 108 + 0x6 bytes   C#

謝謝! Ivatrix。

您的游戲代碼似乎正在修改您未考慮的某些代碼路徑上的screens 看看IEnumerator.MoveNext上的文檔。

創建枚舉器后,對集合進行了修改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM