O STA Message Loop é necessário neste caso?

Eu tenho alguns objetos COM que estou criando e executando em threads em um aplicativo .NET. Os segmentos são marcados como Single Threaded Apartments e tudo parece estar funcionando. Meu entendimento é que, se esses threads tentarem acessar objetos COM do thread principal, esses objetos serão automaticamente empacotados e serializados para mim no .NET, então, mesmo nesse caso, as coisas serão tratadas para mim, tudo seguro e limpo, embora talvez um pouco devagar.

Minha pergunta é, enquanto as coisas parecem estar funcionando bem, eu estounão bombeando um loop de mensagem nos encadeamentos STA que estou criando. Eu prefiro evitar o loop de mensagens se puder por causa das complicações extras que isso causaria (e possíveis perdas de eficiência também).

Eu li um monte de conselhos sobre por que o loop de mensagens é necessário (principalmente do muito útil Hans Passant), e meu entendimento é que o loop de mensagens dá um lugar em um thread A onde algum outro thread B pode solicitar que objetos COM vivendo no thread A pode ser empacotado e jogado com. Se isso estiver correto, desde que nenhum outro segmento solicite nada dos objetos COM no thread A, o Thread A será seguro ao não bombear um loop de mensagem? Ou existem outros casos em que o loop de mensagens também pode entrar em jogo?

Eu estou brincando com fogo aqui? E há sempre um caso em que você pergunta se está brincando com fogo e não está?

questionAnswers(2)

yourAnswerToTheQuestion