mono/MonoGame — Issue #187: Problem when using DrawableGameComponent
Author: SiENcE
Created: 2012-01-06 12:06:42+00:00
State: open

When i create a new DrawableGameComponent Object and than add it to my SceneManager i always get an Exception in:

\MonoGame\MonoGame.Framework\Windows\Game.cs
private void InitializeGameComponents()
{
foreach (GameComponent gc in _gameComponentCollection)
{
gc.Initialize();
}
}

System.InvalidOperationException wurde nicht behandelt.
Message=Die Auflistung wurde geändert. Der Enumerationsvorgang kann möglicherweise nicht ausgeführt werden.
Source=mscorlib
StackTrace:
bei System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
bei System.Collections.Generic.List`1.Enumerator.MoveNextRare()
bei System.Collections.Generic.List`1.Enumerator.MoveNext()
bei Microsoft.Xna.Framework.Game.InitializeGameComponents() in d:\GITs\MonoGame\monogame\MonoGame\MonoGame.Framework\Windows\Game.cs:Zeile 381.
bei Microsoft.Xna.Framework.Game.Update(GameTime gameTime) in d:\GITs\MonoGame\monogame\MonoGame\MonoGame.Framework\Windows\Game.cs:Zeile 405.
bei Microsoft.Xna.Framework.Game.DoUpdate(GameTime aGameTime) in d:\GITs\MonoGame\monogame\MonoGame\MonoGame.Framework\Windows\Game.cs:Zeile 194.
bei Microsoft.Xna.Framework.WindowsGameWindow.OnUpdateFrame(Object sender, FrameEventArgs e) in d:\GITs\MonoGame\monogame\MonoGame\MonoGame.Framework\Windows\WindowsGameWindow.cs:Zeile 561.
bei OpenTK.GameWindow.OnUpdateFrame(FrameEventArgs e)
bei OpenTK.GameWindow.OnUpdateFrameInternal(FrameEventArgs e)
bei OpenTK.GameWindow.RaiseUpdateFrame(Stopwatch update_watch, Double& next_update, FrameEventArgs update_args)
bei OpenTK.GameWindow.DispatchUpdateAndRenderFrame(Object sender, EventArgs e)
bei OpenTK.GameWindow.Run(Double updates_per_second, Double frames_per_second)
bei OpenTK.GameWindow.Run(Double updateRate)
bei Microsoft.Xna.Framework.Game.Run() in d:\GITs\MonoGame\monogame\MonoGame\MonoGame.Framework\Windows\Game.cs:Zeile 184.
bei MemoryMadness.Program.Main(String[] args) in d:\GITs\MonoGame\monogame\EX1_BasicGameWithStateManagement\MemoryMadness\MemoryMadness\Program.cs:Zeile 26.
InnerException:

SampleCode:
Here is the Sample i used to convert it to Monogame. In XNA it works!

Level is an DrawableGameComponent Object.

private void InitializeLevel()
{
currentLevel = new Level(ScreenManager.Game,
ScreenManager.SpriteBatch,
currentLevelNumber, movesPerformed, buttonsTexture);
currentLevel.IsActive = true;

ScreenManager.Game.Components.Add(currentLevel);
}

download sample:
http://create.msdn.com/en-US/education/catalog/lab/memory_madness

http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.drawablegamecomponent.aspx

Any hint how to fix this problem?