2015-05-21 57 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