0

每当调用 IVideoWindow::put_Visible() 时,它都会从消息队列中查看一条消息并分派它。这完全打乱了通话顺序。

我已经修复了几个由此引起的崩溃,在个案中存在偏差。也就是说,在调用 put_Visible() 之前设置一个标志,然后清除该标志。在事件处理程序中,首先检查标志,如果已设置,则将事件放回消息队列并退出事件处理程序(即推迟处理直到 put_Visible() 返回。问题是我的代码库太大而且这种方法不成立。

有没有办法简单地改变 put_Visible() 的行为,使其不会弄乱消息队列和调度?

4

1 回答 1

0

最终我得到了一个想法,但没有验证它。那是在第二个新线程中调用 put_Visible() 。因为 Win32 有分离的线程和分离的消息队列,所以 put_Visible() 不太可能弄乱主消息队列。

于 2010-03-11T23:26:52.163 回答