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

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

线程A 

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

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

      xxx()
	 {
		MessageBox();
	 }
		

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

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

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

你可能感兴趣的:(BUG之旅-MessageBox,Domodal不能显示对话框)