2011-05-28 90 views
4

我有一个VS 2008的Windows 7 x64上的XNA 3.1应用程序。在〜7秒的时间内,如果游戏没有焦点(有时候!),窗口将变灰。标题增加了Not Responding。如果游戏具有焦点,则窗口可能会稍微改变屏幕上的位置,并且我的托盘上的应用程序图标会移动,就好像它正在打开一个新程序一样。
这只发生在瞬间,然后应用程序图标移回原始位置。它在调试和发布模式下都可以这样做。这很奇怪,因为应用程序没有卡在任何循环中,据我所知。如果我进入VS并在代码没有响应时暂停代码,它会显示我应用程序类中的Instance.Run。我试图在那个时刻暂停它;XNA应用程序没有响应

调用堆栈的样子: [休眠,等待,或加入]
外部代码。 - >
mscorlib.dll!System.Threading.Thread.Sleep(int millisecondsTimeout)+ 0x5 bytes Microsoft.Xna.Framework.Game.dll!Microsoft.Xna.Framework.Game.Tick()+ 0x98 bytes
Microsoft .Xna.Framework.Game.dll!Microsoft.Xna.Framework.Game.HostIdle(object sender ... Microsoft.Xna.Framework.Game.dll!Microsoft.Xna.Framework.GameHost.OnIdle()+ 0x3d bytes
...等等。

如果我打运行,而暂停时,程序将工作和解冻。一旦它进入这个无响应模式的应用程序将不会解冻本身。所有的声音的时候继续工作它没有回应。

此外,我有一个方法,覆盖OnDeactivated()事件,它会在应用程序失去响应时被调用,即使应用程序将有焦点。我曾尝试安装我的显卡的最新驱动程序,但未能解决此问题。运行不带VS的可执行文件时也会发生此问题。就像我说的那样,这个问题发生的时间〜75%,否则它可以正常工作。

我只找到一个关于该问题的论坛帖子: http://forums.create.msdn.com/forums/p/56743/346180.aspx

It looks like it was never resolved.

+0

这是否发生在空的游戏呢? (新创建的游戏项目中没有其他任何东西) – 2011-05-28 17:12:37

+0

非常好的建议,我没有考虑尝试。不 - 它不会通过一个新的游戏项目来实现。有什么建议么? – 2011-05-28 17:24:12

+0

我只是想知道这是XNA本身的问题,还是您写的一些代码。当它像这样卡住时,你在运行什么? – 2011-05-28 20:54:04

回答

4

原来我在Update()方法中检查Mediaplayer.State,并且由于我的分析器,我发现了这个问题。 MediaPlayer.State是一个昂贵的枚举检索,一旦我删除该块不再挂起。

+0

哇,这是一个边缘案例...感谢您更新与决议 – 2011-06-12 11:59:51

+0

一百万谢谢你! – 2013-01-12 08:05:10

0

这听起来像一个相当奇怪的问题......跳转至心灵的唯一的事情是,也许应用程序是不优雅地处理设备的损失。我知道这很模糊,但也许它可能是一个暗示。检查出所有的内容加载程序(特别是如果你做任何手工的资源,而不是通过内容管道...检查出DeviceLost事件等

一些另外的信息:退房这篇博客从XNA团队如何正确处理资源和设备丢失/复位事件:http://blogs.msdn.com/b/xna/archive/2006/09/18/761355.aspx

但更多的信息:forum post那里我得到了上面的链接有一个很好的新书肖恩哈格里夫斯这就是为什么我认为这可能与你正在经历的事情有关:

设备丢失并重新创建设备 不同的东西。自动池 资源将在设备丢失后仍然存在, 但是在任何时候重新创建设备 需要重新创建。

设备丢失的情况发生在很多地方: 当你从一个全屏应用程序更改分辨率,标签客场 ,锁定 终端等

设备只能重新发生在 极端的情况下,像拖着 窗口到不同的显示器(其中 就驱动程序而言可能是一个完全不同的 显卡,所以它必须从头开始 的一切)。

+0

DeviceLost事件并没有被调用过,我不知道我是否知道你的内容加载例程的含义......如果它编译的话,我会寻找什么与众不同?我没有通过内容管道使用任何东西。 – 2011-06-01 05:31:20

+0

我在上面的答案中添加了一个链接。检查一下,看看你是否在做任何可能受到设备丢失/重置事件影响的事情。 – 2011-06-01 13:27:29

+0

我检查了设备丢失和设备重置事件,他们都没有指出我在正确的方向。不过,我从那篇博文中学到了很多东西!谢谢 – 2011-06-11 16:27:33