BUG之旅-MessageBox,Domodal不能显示对话框

来源:互联网 发布:红旗linux证书 编辑:程序博客网 时间:2024/05/28 17:07

今天发现在自己的代码里有这样一个结构

线程A 

while(1){if()PostMessage(WM_USER+100,wParam,lParam);}

然后消息映射给主线程进行处理

      xxx() {MessageBox(); }

这里就会挂。跳不出MessageBox或者Dialog。

而类似的结构在另一个程序就没事能运行。好几个小时排查才发现,在循环里使用PostMessage了,不断向主线程消息队列发送消息,导致Windows等待将这些消息合并起来进行处理,而线程A一直在发送导致主线程不能运行,假死。

在另一个程序能进行应该是A线程做的事比较多,使得Windows能将这些消息取出,进行处理

0 0
原创粉丝点击