我的MFC程序远程控制WMP实例以捕获WMP事件,并使用IWMPCore
,IWMPCore3
,IWMPPlaylistCollection
,IWMPMediaCollection
与WMP进行交互。远程实例正在查找并且可以捕获事件,但是当我开始获取所有歌曲的所有细节(大约5100首歌曲)时,WMP停止响应,直到我的应用程序获取所有歌曲并释放所有上述实例。任何人都可以帮我解决这个问题,如何解决?
答案 0 :(得分:2)
WMP ActiveX控件是一个STA COM对象,因此所有交互(方法调用)都通过实例化线程,在大多数情况下是UI线程。也就是说,无论你对接口做什么,这些调用都会在调用时阻止GUI。
您需要在活动过程中抽取窗口消息以取消阻止UI(显示进度并让用户点击取消按钮),或创建初始化为STA的工作线程并使用WMP的辅助不可见实例获取收集详细信息那里。