问题描述
一个使用C#开发的程序,在某台Windows10,总是随机挂起,1天总有3、4次。主界面突然就挂起在任务栏里,无法使用,只有杀掉重新启动。具体什么操作造成的不能判断,因为都是在操作其它程序后,准备切换回来时才发现问题的。
实地查看
先查看了程序本身的日志,发现还是有线程记录日志输出,这说明进程还是活着的。UI主线程没有日志输入,初步判断问题在UI主线程。
然后使用了GDIView和SPY++工具来做进一步来诊断。
使用GDIView可以查看窗体的GDI句柄数目,Windows程序,GDI句柄数目如果过多,界面会僵住。查看下来,这个程序的GDI句柄数只有200多,不是句柄数目过多问题。
使用SPY++,能定位到程序窗口。选中这个窗口,点击右键菜单“消息”,发现居然还有WM_开头的消息出来。既然能够接受Windows消息,说明消息循环和主线程都健在。
综合前面2者,应该还是程序UI部分的问题了。
那具体什么原因造成的呢?暂时没有头绪。
网上搜索
于是,就网上搜索类似情况。找到2个链接。
https://www.devexpress.com/Support/Center/Question/Details/T235617