Keyboard.GetState()只能第一次工作,而Memory增加(不处理)

编辑更新3我一直在寻找一个解决scheme的networking,发现有几个人尝试处理对象时使用MonoGame与Memoryleak挣扎。 可能是MonoGame应该启动,然后closures作为一个自己的过程,而不是从我的情况下的另一个程序。 当我点击button时,一个新的线程被创建,MonoGame应用程序被启动:

viThread = new Thread(startDemo); viThread.Priority = ThreadPriority.Highest; viThread.Start(); private void startDemo() { using (Demo d = new Demo()) d.Run(); } 

“演示”是由一个Game.Exit命令closures,我也尝试了Disposed(true)没有任何成功。 下一次我启动MonoGame是Keyboard.GetsState()总是空的,内存增加。 我做了一个循环,开始closures应用程序100次,它正在吃掉我的记忆。 我看到很多关于SharpDX与分散资源不一致的讨论。 所以在这里,我卡住了。 只是想指出,这对XNA工作得很好,但现在不改变为MonoGame。 再一次感谢我迄今为止得到的所有评论。

我上传了一个项目,你可以自己看到这个问题。 第二次不要键盘input工作,但鼠标input,每次都增加内存:

下载SLN项目

编辑更新4

是增加内存的SharpDX,我在退出之前执行下面的行:

 SharpDX.Diagnostics.ObjectTracker.ReportActiveObjects().Length 

而且它一直在增加。 所以我猜想它没有发布。 有人知道如何做到这一点?

你忘了处理你的游戏对象。

 [STAThread] static void Main() { using (Game1 game = new Game1()) game.Run(); using (Game1 game = new Game1()) game.Run(); }