Comunicação Single-Threaded e multithread

Um cliente ou servidor que dá suporte a Apartments de thread único e multi-threaded terá um apartamento multi-threaded, contendo todos os threads inicializados como de thread livre e um ou mais Apartments de thread único. Os ponteiros de interface devem ser empacotados entre Apartments, mas podem ser usados sem marshaling em um apartamento. As chamadas para objetos em um apartamento de thread único serão sincronizadas pelo COM. As chamadas para objetos no apartamento multi-threaded não serão sincronizadas pelo COM.

Todas as informações sobre Apartments de thread único se aplicam aos threads marcados como modelo de apartamento, e todas as informações em Apartments multithread se aplicam a todos os threads marcados como livres de threads. As regras de Threading Apartment se aplicam à comunicação entre apartamento, exigindo que os ponteiros de interface sejam empacotados entre Apartments com chamadas para CoMarshalInterThreadInterfaceInStream e CoGetInterfaceAndReleaseStream, conforme descrito em Apartments de thread único.

Observação

Algumas considerações especiais se aplicam ao lidar com servidores em processo. Para obter mais informações, consulte problemas de thread de servidor em processo.

Acessando interfaces em Apartments

Escolhendo o modelo de Threading

Apartments multithread

Problemas de Threading do servidor em processo

Processos, threads e Apartments

Apartments de thread único