Forms 20秒后冲洗XNA屏幕

Forms 20秒后冲洗XNA屏幕,forms,xna,picturebox,dispose,Forms,Xna,Picturebox,Dispose,我在Windows窗体项目的PictureBox中运行XNA游戏。启动后,它可以正常运行约20秒,然后突然一切消失,您可以看到默认的矢车菊蓝色屏幕。我检查了每一个计时器并处理了使用情况,但什么也没发现。是什么导致了这个问题?我想知道你为什么使用pictureBox。您必须创建自己的控件,该控件将在窗体内处理游戏窗口 检查 它看起来像: 最初由microsoft编写的游戏绘图控件源代码。欢迎使用Stackoverflow!没有任何代码,我们无法真正帮助您。如果你发布了其中的一部分(你认为或知道它

我在Windows窗体项目的PictureBox中运行XNA游戏。启动后,它可以正常运行约20秒,然后突然一切消失,您可以看到默认的矢车菊蓝色屏幕。我检查了每一个计时器并处理了使用情况,但什么也没发现。是什么导致了这个问题?

我想知道你为什么使用pictureBox。您必须创建自己的控件,该控件将在窗体内处理游戏窗口

检查

它看起来像:


最初由microsoft编写的游戏绘图控件源代码。

欢迎使用Stackoverflow!没有任何代码,我们无法真正帮助您。如果你发布了其中的一部分(你认为或知道它出了问题的地方),那就太好了。你必须发布一些代码给任何人,以确定问题可能是什么。然而,20秒听起来像是GC收集启动的可能持续时间。你的游戏是场地/财产吗?检查类似的东西,确保没有任何东西丢失引用。我将我的游戏作为表单项目中的一个字段。实际上,它现在非常大,所以我没有发布任何代码。我不知道问题出在哪里。但是在出现这个蓝色页面并且我的所有项目都在那里之后,我暂停了调试。没有更改任何值,只是屏幕变为蓝色。游戏似乎是在后台运行的。我认为它是GC,但所有的对象仍然存在,它们只是消失了。我把所有的东西都保存在LevelOne类中,它继承自Level类,Level类继承自ScreenView:DrawableGameComponent。我检查过了,在ScreenView上没有调用Dispose,所以它一定是其他东西。您确定Draw方法实际上正在运行吗?如果是这样的话,我所能想到的就是,它一定是失去了与PictureBox的连接。确保游戏中的手柄仍指向PictureBox。也许它改变了句柄值?(我不知道这是否可能。也许如果它恢复原状?)