关于我们从XNA到MonoGame的过去几天,我做了两个不同的帖子,以及应用程序如何增加内存,并且在第一次启动后没有检测到键盘输入。 使用WinForms按钮启动MonoGame。
private void button1_Click(object sender, EventArgs e)
{
viThread = new Thread(Demo);
viThread.Priority = ThreadPriority.Highest;
viThread.Start();
}
private void Demo()
{
using(Demo d = new Demo())
d.Run();
}
由于Monogame正在使用SharpDX(XNA没有)我在使用Game.Exit()退出应用程序时调用了一个函数,如下所示:
SharpDX.Diagnostics.ObjectTracker.ReportActiveObjects().Length;
该数字始终高于600.如何处理/删除所有资源?我认为这将解决这两个问题(肯定是内存泄漏)。问候
答案 0 :(得分:2)
MonoGame和你的代码都应该处理所有对象,它最终将处理SharpDX资源,但你不必直接处理SharpDX资源。由于MonoGame是SharpDX的外观,因此它通常被视为SharpDX对象的所有者。我不知道有关MonoGame实现的详细信息,因此我不知道他们是否正确处理整个Dispose过程,但您应该与他们一起检查(处理Game类应该在所有GameComponent上调用dispose)包括ContentManager ......等。)