主題:顯示屏運行一段時間不刷新了 共有49049人關注過本帖 |
---|
shtupc |
1樓 信息 | 搜索 | 郵箱 |
加好友 發短信 |
顯示屏運行一段時間不刷新了 Post By:2013-2-11 17:05:00 [只看該作者]
我用Em9170開發,顯示屏是800*480,運行我的程序正常,但連續運行10幾個小時候,屏幕就不動了,無論是觸摸屏還是用鼠標操作,就跟死機一樣,但實際程序沒有死,對外的通訊(包括串口和網絡)都正常,這可能是什么原因,怎么解決。
|
單帖管理 | 引用 | 回復 |
x10 |
2樓 |
Post By:2013-2-13 19:10:00 [只看該作者]
新年好! 可以通過遠程工具查看你的進程及包括的線程,估計是你的顯示線程被掛起了。負責喂狗的監視顯示應與各個線程有數據交換,確認是否正常工作,這樣異常時可導致系統重啟,從而恢復系統的所有功能。
|
|
單帖管理 | 引用 | 回復 |
客人 |
3樓 |
Post By:2013-2-15 7:30:00 [只看該作者]
謝謝了! 不是特別明白,我用的是VS2005中的VB.net開發,就是使用自帶的顯示控件(如文本框,列表框等),需要哪種遠程工具可以查看進程?看到運行的線程后如何判斷是顯示進程,只看到進程能判斷是否有數據交換么?實在搞不清楚,麻煩能說的詳細些么? |
|
單帖管理 | 引用 | 回復 |
客人 |
4樓 |
Post By:2013-2-15 7:37:00 [只看該作者]
遠程工具找到了,VS2005自帶就有,是看到了一大堆進程和線程,然后就不知道怎么辦了 |
|
單帖管理 | 引用 | 回復 |
yy |
5樓 信息 | 搜索 | 郵箱 |
加好友 發短信 |
Post By:2013-2-16 9:13:00 [只看該作者]
屏幕不動是整個系統都不動了,還是只是你的程序界面不動了,而你的程序又恰好是全屏狀態。
因為你的其他功能是正常的,我猜測是后一種情況。程序界面卡死,最大的可能是在某個TIMER里面死循環了,或者某個函數處于阻塞狀態,然后你的串口和網絡的工作是在另外的線程里面完成的,所以主線程卡住了并不影響支線程的運行。 你先用遠程工具的進程查看器,找到你的程序名字的exe,中止它,看系統是否還是正常的。如果系統正常的,就只能慢慢檢查程序代碼了,看是不是有用到timer,里面哪個地方是不是可能導致卡死。
|
單帖管理 | 引用 | 回復 |
客人 |
6樓 |
Post By:2013-2-16 9:40:00 [只看該作者]
感謝! 我的程序只是界面不動,系統本身是正常的,如開始按鈕還是可以正常點擊。 我的程序是用的Timer,完成串口通訊和網絡通訊功能,為了系統調試方便,沒有使用多線程,我現在比較奇怪的是,程序一開始運行是正常的,連續運行幾個小時后才會出現這種情況,查了很多資料,有人提出是內存使用后沒有正確釋放,導致這種現象出現,但程序中就是常規的變量定義,沒有什么特殊的分配內存的命令(使用VB.Net),郁悶死了。 |
|
單帖管理 | 引用 | 回復 |
yy |
7樓 信息 | 搜索 | 郵箱 |
加好友 發短信 |
Post By:2013-2-16 9:55:00 [只看該作者]
這種情況可能性很多,也有可能是內存不夠,然后申請空間失敗,然后你在TIMER里面做的死循環申請空間。
總的來說絕大部分可能就是你的timer卡死了,你可以發下你TIMER的代碼給我看看。
|
單帖管理 | 引用 | 回復 |
shtupc |
8樓 信息 | 搜索 | 郵箱 |
加好友 發短信 |
Post By:2013-2-18 16:23:00 [只看該作者]
仔細檢查了一下,貌似是文件操作的問題,在timer里面有比較頻繁的文件寫操作,調整了一下,好像可以了,再連續運行一段時間看看。 感謝了! |
單帖管理 | 引用 | 回復 |