Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O gravador de componentes em fila COM+ é capaz de ser executado no espaço multithread (MTA) do processo ou num espaço single-thread (STA). Quando o gravador de vídeo é executado no STA, o COM+ requere que cada apartamento que contenha objetos tenha uma fila de Enfileiramento de Mensagens para gerir chamadas provenientes de outros processos e apartamentos dentro do mesmo processo. Isso significa que a função de trabalho do thread deve ter um loop de mensagem. Quando um componente enfileirado é instanciado, o ponteiro de interface retornado é sempre um ponteiro de interface proxy em vez de um ponteiro de interface direto. O ponteiro é, na verdade, uma referência a uma instância do gravador de dados. Se essa referência de interface do gravador for passada para outra tarefa, a tarefa original deverá ainda estar a executar o loop de mensagens do Windows para que a tarefa de receção possa desserializar a interface. Se esse não for o caso, o thread de recebimento trava em uma chamada para CoUnmarshalInterface.
Se você estiver usando primitivos para sincronizar os threads, considere usar MsgWaitForMultipleObjects em vez de outras funções de sincronização. Isso verifica se há mensagens na fila, bem como o estado do objeto de sincronização.