I’m not exactly sure if spawning entities is thread safe or not. What I’m trying to do is spawn entities with async and Task.Run() but I keep getting errors during runtime. Any help would be appreciated!
public static async Task SpawnEntity()
{
await Task.Run(() =>
{
Entity entity = new Entity();
SceneSystem.SceneInstance.RootScene.Entities.Add(entity);
});
}
Errors
[Game]: Error: Unexpected exception. System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
at System.Collections.Generic.HashSet1.Enumerator.MoveNext() at SiliconStudio.Xenko.Engine.Processors.TransformProcessor.Draw(RenderContext context) in C:\TeamCity\work\80a49494ba341a6a\sources\engine\SiliconStudio.Xenko.Engine\Engine\Processors\TransformProcessor.cs:line 132 at SiliconStudio.Xenko.Engine.EntityManager.Draw(RenderContext context) in C:\TeamCity\work\80a49494ba341a6a\sources\engine\SiliconStudio.Xenko.Engine\Engine\EntityManager.cs:line 191 at SiliconStudio.Xenko.Engine.SceneSystem.Draw(GameTime gameTime) in C:\TeamCity\work\80a49494ba341a6a\sources\engine\SiliconStudio.Xenko.Engine\Engine\SceneSystem.cs:line 197 at SiliconStudio.Xenko.Games.GameSystemCollection.Draw(GameTime gameTime) at SiliconStudio.Xenko.Games.GameBase.Draw(GameTime gameTime) at SiliconStudio.Xenko.Games.GameBase.DrawFrame() at SiliconStudio.Xenko.Games.GameBase.TickInternal() System.InvalidOperationException: Collection was modified; enumeration operation may not execute. at System.Collections.Generic.HashSet
1.Enumerator.MoveNext()
at SiliconStudio.Xenko.Engine.Processors.TransformProcessor.Draw(RenderContext context) in C:\TeamCity\work\80a49494ba341a6a\sources\engine\SiliconStudio.Xenko.Engine\Engine\Processors\TransformProcessor.cs:line 132
at SiliconStudio.Xenko.Engine.EntityManager.Draw(RenderContext context) in C:\TeamCity\work\80a49494ba341a6a\sources\engine\SiliconStudio.Xenko.Engine\Engine\EntityManager.cs:line 191
at SiliconStudio.Xenko.Engine.SceneSystem.Draw(GameTime gameTime) in C:\TeamCity\work\80a49494ba341a6a\sources\engine\SiliconStudio.Xenko.Engine\Engine\SceneSystem.cs:line 197
at SiliconStudio.Xenko.Games.GameSystemCollection.Draw(GameTime gameTime)
at SiliconStudio.Xenko.Games.GameBase.Draw(GameTime gameTime)
at SiliconStudio.Xenko.Games.GameBase.DrawFrame()
at SiliconStudio.Xenko.Games.GameBase.TickInternal()
Unhandled Exception: System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
at System.Collections.Generic.HashSet`1.Enumerator.MoveNext()
at SiliconStudio.Xenko.Engine.Processors.TransformProcessor.Draw(RenderContext context) in C:\TeamCity\work\80a49494ba341a6a\sources\engine\SiliconStudio.Xenko.Engine\Engine\Processors\TransformProcessor.cs:line 132
at SiliconStudio.Xenko.Engine.EntityManager.Draw(RenderContext context) in C:\TeamCity\work\80a49494ba341a6a\sources\engine\SiliconStudio.Xenko.Engine\Engine\EntityManager.cs:line 191
at SiliconStudio.Xenko.Engine.SceneSystem.Draw(GameTime gameTime) in C:\TeamCity\work\80a49494ba341a6a\sources\engine\SiliconStudio.Xenko.Engine\Engine\SceneSystem.cs:line 197
at SiliconStudio.Xenko.Games.GameSystemCollection.Draw(GameTime gameTime)
at SiliconStudio.Xenko.Games.GameBase.Draw(GameTime gameTime)
at SiliconStudio.Xenko.Games.GameBase.DrawFrame()
at SiliconStudio.Xenko.Games.GameBase.TickInternal()
at SiliconStudio.Xenko.Games.GameBase.Tick()
at SiliconStudio.Xenko.Games.GamePlatform.Tick()
at SiliconStudio.Xenko.Games.GamePlatform.OnRunCallback()
at SiliconStudio.Xenko.Games.GameWindowWinforms.<>c__DisplayClass19_0.b__0()
at SiliconStudio.Xenko.Games.WindowsMessageLoop.Run(Control form, RenderCallback renderCallback, Boolean useApplicationDoEvents)
at SiliconStudio.Xenko.Games.GameWindowWinforms.Run()
at SiliconStudio.Xenko.Games.GamePlatform.Run(GameContext gameContext)
at SiliconStudio.Xenko.Games.GameBase.Run(GameContext gameContext)
at WorldEngine.WorldEngineApp.Main(String[] args) in C:\Users\levig\OneDrive\Workstation\WorldEngine\WorldEngine\WorldEngine.Windows\WorldEngineApp.cs:line 11