主题:显示屏运行一段时间不刷新了 共有43475人关注过本帖 |
---|
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里面有比较频繁的文件写操作,调整了一下,好像可以了,再连续运行一段时间看看。 感谢了! |
单帖管理 | 引用 | 回复 |