2015-05-21 5 views
0

Моя программа MFC удаляет экземпляр WMP, чтобы поймать события WMP и использует IWMPCore, IWMPCore3, IWMPPlaylistCollection, IWMPMediaCollection для взаимодействия с WMP с использованием COM. Удаленный экземпляр работает находкой, и он может поймать события, но когда я начал получать все детали всех песен (почти 5100 песен), WMP перестает отвечать на запросы до тех пор, пока мое приложение не выберет все песни и не выпустит все вышеприведенные экземпляры. Кто-нибудь может помочь мне решить проблему и как ее можно исправить?WMP interfacace блокирует WMP от взаимодействия пользователя

ответ

2

Управление WMP ActiveX является объектом STA COM, поэтому все взаимодействия (вызовы методов) проходят через поток создания, который в большинстве случаев является потоком пользовательского интерфейса. То есть, независимо от того, что вы делаете с интерфейсами, GUI вызовов блокирует время вызова.

Вам необходимо либо вывести сообщения окна окна в середине вашей активности, чтобы разблокировать пользовательский интерфейс (показать прогресс и нажать кнопку «Отменить»), либо создать рабочий поток, инициализированный как STA, и получить сведения о сборке, используя дополнительный невидимый экземпляр WMP там.

+0

На самом деле я просто переместил код WMP COM в поток, отличный от основного потока. Это отлично работает. :) – Durgesh

 Смежные вопросы

  • Нет связанных вопросов^_^