我有一个 C# 应用程序,它由一个带有多个 Pivotitem 的 Pivot 组成。正常的 Pivotitems 会正确卸载并且不会泄漏内存。不过,在其中两个项目上,我有使用 Monogame 渲染 3d 模型的绘图表面。在卸载和加载它们的枢轴时,我试图完全破坏然后完全重新创建“游戏”实例(主要是因为 Monogame 目前不允许您绘制到两个表面,并且因为它们使用大量内存并且有两个都不够)。
我的问题在于,当我处理加载时创建的 Xamlgame 时,它不会释放它使用的所有内存。这意味着每次我重新创建 Xamlgame 时,它都会开始使用越来越多的内存,直到用完为止。因此,我想知道是否有任何 C# 方法可以完全处理在加载对象时使用的所有内存。
任何 Monogame 特定的方式也将不胜感激。目前我首先处理我的顶点和索引缓冲区,然后我清除我的顶点和索引列表,然后我处理我的 Basiceffect 和我的 Graphicsdevicemanager,然后我在“游戏”本身上调用 dispose,最后我制作变量包含等于 null 的“游戏”。
PS。如果您曾经在 XNA 中这样做过,那么您也可以帮助我,因为语法基本相同。
编辑(可能是 MonoGame 错误):
我现在已经设法正确清理所有缓冲区等。我的 BasicEffect 仍然存在内存泄漏。我已经尝试处理它并使其为空,但无论如何,每次我重新加载我的枢轴时,它都会继续使用越来越多的内存。