Estou aprendendo C # 3.5 e quero saber o que [STAThread]
faz em nossos programas?
fonte
Estou aprendendo C # 3.5 e quero saber o que [STAThread]
faz em nossos programas?
A STAThreadAttribute
é essencialmente um requisito para a bomba de mensagem do Windows para se comunicar com componentes COM. Embora o Windows Forms central não use COM, muitos componentes do sistema operacional, como as caixas de diálogo do sistema, usam essa tecnologia.
O MSDN explica o motivo com mais detalhes:
STAThreadAttribute indica que o modelo de encadeamento COM para o aplicativo é um apartamento de thread único. Este atributo deve estar presente no ponto de entrada de qualquer aplicativo que use o Windows Forms; se for omitido, os componentes do Windows podem não funcionar corretamente. Se o atributo não estiver presente, o aplicativo usará o modelo de apartamento multithread, que não é suportado pelo Windows Forms.
Esta postagem no blog ( por que o STAThread é necessário? ) Também explica muito bem o requisito. Se você deseja uma visão mais detalhada de como o modelo de encadeamento funciona no nível CLR, consulte este artigo da MSDN Magazine de junho de 2004 (arquivado, abril de 2009).
[STAThread]
?Diz ao compilador que você está em um modelo Single Thread Apartment. Isso é uma coisa ruim do COM, geralmente é usado para Windows Forms (GUI), pois usa o Win32 para seu desenho, que é implementado como STA. Se você estiver usando algo que é modelo STA a partir de vários threads, obterá objetos corrompidos.
É por isso que você precisa invocar o Gui a partir de outro thread (se você tiver feito alguma codificação de formulários).
Basicamente, não se preocupe, basta aceitar que os threads da GUI do Windows sejam marcados como STA, caso contrário, coisas estranhas acontecem.
fonte
Leia mais informações aqui (Arquivado, junho de 2009)
e
Por que o STAThread é necessário?
fonte