2011-05-28 167 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