Tipos de rosca do dispensador de recursos COM+

As chamadas em um dispensador de recursos COM+ podem se originar em um dos seguintes tipos de thread:

  • Linha de apartamento (STA)
  • Rosca livre (MTA)
  • Rosca não-COM (aplicativo ou linha coletora de lixo do gerenciador de dispensadores)

Se um dispensador de recursos não for um objeto COM, ele deverá ser capaz de lidar com chamadas que chegam de qualquer thread a qualquer momento. Se um dispensador de recursos for um objeto COM, o objeto COM deverá ser registrado com um modelo de threading de Ambos. Isso permite que threads STA ou MTA criem e usem o dispensador de recursos sem uma opção de thread.

Se um dispensador de recursos criar e usar outro objeto COM (por exemplo, um gerenciador de recursos fora do processo), o dispensador de recursos talvez precise manter vários proxies para esse outro objeto COM e garantir que as chamadas para o objeto sejam feitas usando o proxy apropriado para o thread de chamada. Quando o dispensador de recursos cria esse objeto, ele organiza e salva a referência. Antes de chamar o objeto novamente, ele deve unmarshal para criar um proxy para o thread de chamada.

Pode ser mais eficiente armazenar em cache esses proxies por thread mantendo um mapa do ID do thread para um ponteiro de proxy. Esse mapa se expande à medida que novos threads são usados no processo.

Conceitos de Dispensador de Recursos COM+