我在线程A上有一个窗口,该窗口在某个时候(由于在其wndproc上收到消息)触发了对线程B的操作,然后等待该操作完成(使用某种同步机制)。然后,线程B调用MoveWindow()
,以在线程A的窗口内移动一个子窗口(例如,标准文本框)。此时,由于某种原因,程序进入了死锁状态。如果从线程A调用MoveWindow()
,则一切正常。有什么想法吗?
最佳答案
您可以将SetWindowPos与标志SWP_ASYNCWINDOWPOS一起使用,而不要使用MoveWindow。
原因可能是ThreadA等待ThreadB处理某些事件,但同时ThreadB等待ThreadA(拥有窗口的线程)返回MoveWindow的结果。
关于c++ - MoveWindow死锁?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/770503/