Pergunta

Duplicate possíveis:
Poderia explicar STA e MTA?

tópicos Todos ThreadPool estão no apartamento multithreaded.

- De acordo com a MSDN

O que isso significa? Estou realmente preocupado com o que a diferença entre multi vs único modelo de rosca apartamento é. Ou o que é que o modelo de apartamento significa? Eu li o MSDN sobre ele, e ele realmente não faz sentido para mim. Eu acho que pode ter uma idéia, mas eu estava pensando que alguém aqui poderia explicar isso na planície Inglês.

Obrigado, Anthony D

Update 1

Encontrei este Poderia explicar STA e MTA?

Alguém pode ser mais descritivo?

Update 2

Também estou procurando uma resposta sobre como isso se aplica ao pool de threads, eo que eu preciso tomar cuidado para por causa disso.

Foi útil?

Solução

STA (apartamento single-threaded) e MTA (multi-threaded apartment) têm a ver com COM . componentes COM pode ser projetado para ser acessado por um único segmento, caso em que eles são hospedados em uma STA , ou eles podem ser feitos rosca internamente seguro, e hospedado em uma MTA . Um processo pode ter apenas um MTA, mas muitos STAs. Se você está indo só para consumir componentes COM tudo o que você realmente precisa saber é que você tem que coincidir com o apartamento para o componente ou coisas desagradáveis ??vai acontecer.

Outras dicas

Na realidade, STAs e MTAs ter um impacto sobre o código .NET. Veja blog de Chris Brumme de maneira mais detalhes, então você provavelmente precisa:

https://devblogs.microsoft.com/ cbrumme / apartamentos-and-bombeando-in-the-clr /

É muito importante entender como STAs bomba mensagens em .NET. Ela tem consequências.

Se o objeto COM precisa acreditar que é em um ambiente single-threaded, STA uso. Está garantido que a criação e todas as chamadas serão feitas pelo mesmo thread. Você pode usar com segurança armazenamento local de thread e você não precisa usar seções críticas.

Se o objeto COM pode ser acessado por muitos threads simultaneamente, use MTA -. Não haverá guardas colocar no lugar

Como outros apontaram, ele geralmente tem pouco impacto sobre aplicações .NET.

No entanto, estar ciente de que o anfitrião teste Microsoft usado para testes de unidade é realmente implementado em um STA, o que significa que há limitações sobre o que você pode fazer em teste de unidade. Por exemplo, você não pode fazer um WaitAll em um WaitHandle em um teste de unidade é que você está usando anfitrião teste da Microsoft.

Você não tem que se preocupar com isso, a menos que você está fazendo COM-interoperabilidade, caso em que há problemas de triagem. Ele não tem ramificações para .net em si.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top