2015-05-21 52 views
0

我的MFC程序可以远程控制WMP实例以捕获WMP事件,并且使用IWMPCore,IWMPCore3,与使用COM的WMP进行交互。远程实例正在运行查找并捕获事件,但是当我开始获取所有歌曲的所有细节(将近5100首歌曲)时,WMP会停止响应,直到我的应用程序获取所有歌曲并释放上述所有实例为止。任何人都可以请帮我解决这个问题,它如何解决?WMP界面阻止用户交互中的WMP

回答

2

WMP ActiveX控件是一个STA COM对象,所以所有交互(方法调用)都通过实例化线程,这在大多数情况下是UI线程。也就是说,无论你使用哪种接口,呼叫都会阻止GUI进行通话。

您需要在活动中抽取窗口消息以解除阻塞UI(显示进度并让用户点击“取消”按钮),或者创建一个初始化为STA的工作者线程,并使用次要不可见实例WMP在那里。

+0

其实我只是将WMP COM代码移动到主线程以外的线程。这工作得很好。 :) – Durgesh