Что означает код HRESULT 0xC00D36DA (MF_E_MULTIPLE_SUBSCRIBERS)?

 
Предыдущий Следующий
MF_E_MULTIPLE_BEGIN MF_E_TIMER_ORPHANED

MF_E_MULTIPLE_SUBSCRIBERS

Что означает MF_E_MULTIPLE_SUBSCRIBERS

MF_E_MULTIPLE_SUBSCRIBERS (0xC00D36DA) означает, что очередь событий Media Foundation уже имеет активного получателя, а другой код пытается подписаться на тот же event generator несовместимым способом.

Что проверить

Найдите все места, которые вызывают BeginGetEvent или синхронный GetEvent для одного и того же объекта. Media Foundation ожидает согласованного владельца очереди; параллельное чтение из двух компонентов приводит к конкуренции за одни события.

Исправление — централизовать получение событий и раздавать их заинтересованным частям приложения уже после получения. Не создавайте второй subscriber как способ «не пропустить» событие: это меняет порядок доставки и не соответствует контракту очереди.

Технические ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.