当调用IVideoWindow :: put_Visible()时,它会从消息队列中查看消息并将其分派。这完全扰乱了呼叫序列。
我已经修复了由此引起的几次崩溃,具体情况就是个案偏见。也就是说,在调用put_Visible()之前设置一个标志然后清除该标志。在事件处理程序中,首先检查标志,如果已设置,则将事件放回消息队列并退出事件处理程序(即推迟处理直到put_Visible()返回。问题是我的代码库太大了而且这种方法无法维持。
有没有办法简单地改变put_Visible()的行为,使它不会弄乱消息队列和调度?
答案 0 :(得分:0)
最终我得到了一个想法但未经过验证。这是在第二个新线程中调用put_Visible()。因为Win32已经将分离的线程分开了消息队列,所以put_Visible()不太可能使主消息队列混乱。