Pergunta

Eu sou um novato para o WPF e ter um par de perguntas sobre WPF e Windows integração formulários.

Eu tenho um aplicativo formas existentes Windows Visual C #. Gostaria de integrá-lo com uma janela WPF, que pode ser mostrado em um clique de botão. Isso não era possível como WPF espera que o segmento chamado para ser um STAThread e, por padrão WinForm assume que o segmento é um MTAThread. Tentei gerando um novo segmento com um estado apartamento de STAThread para chamar a interface do usuário do WPF, mas que não funcionou. Eu tentei usar o método Dispatcher.BeginInvoke e trabalho de fundo, bem como, mas nenhum deles resolveu o problema.

1) Podemos fazer uma chamada para WPF janela / controle sem marcar o principal como um STAThread? Se for possível, alguém pode por favor me aponte para uma direção correta? 2) Se a única maneira de conseguir isso é fazendo o fio condutor de uma STAThread, haverá nenhum impacto para o geral desempenho / capacidade de resposta do aplicativo.

Agradecemos antecipadamente.

Foi útil?

Solução

Eu acho que a solução mais simples é fazer com que seus WinForms enfiar executar em um STA. Não há nada de errado em ter um STA winforms rosca aplicativo (que é, na verdade, muitas vezes o padrão).

Você pode corrigir isso adicionando a seguinte linha ao método principal de seu programa:

[STAThreadAttribute]
static void Main(string[] args)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top