我在Qt中編寫一個桌面遊戲,在玩家進行移動之後,計算機AI必須暫停並思考一段時間。然而,在思考時,似乎只有在每行代碼執行之後屏幕纔會更新。因此,用戶會點擊一個方塊,幾秒鐘內沒有發生任何事情,然後突然看到他的移動結果和計算機的移動。強制Qt GUI更新
爲了解決這個問題,我嘗試創建一個AI運行其代碼的新線程,然後將其放在板上。然而,有時(這是非常不一致的)遊戲在計算機移動後崩潰。
所以你們可以兩種:
- 告訴我如何迫使主窗口,以更新其內容
- 幫我嘗試調試崩潰的問題(我完全新的線程)
編輯 - 我嘗試設置斷點爲suszterpatt建議,程序似乎在調試器中一直崩潰(它不是在我設置斷點之前)。
不管怎麼說,我通過程序步驟,似乎要經過run
功能罰款,直到它到達結尾括號,然後如果我通過它一步跳躍到線317上qthread_win.cpp
,這只是說
finish(arg); //line 317
return 0;
如果我經過那一行,調試器凍結並且Qt在20秒後發出警告。如果我繼續,我會收到「此應用程序請求運行時以非常規方式終止它」的消息,當我不調試時程序偶爾崩潰時,我會收到這條消息。
現在該怎麼辦?
你應該堅持創建一個單獨的AI線程。只有2個線程,調試不應該太「難」,特別是如果你已經知道崩潰發生的位置:你可能只是放下一些斷點,看看哪一個最後被執行,然後從那裏縮小它。 – suszterpatt 2010-12-14 20:51:36
@susz好的確定,但我不太確定哪裏出現崩潰。去谷歌在qt設置斷點... – wrongusername 2010-12-14 20:52:54