Como: Suportar interoperabilidade COM exibindo um formulário do Windows com o método ShowDialog
Você pode resolver problemas de interoperabilidade do COM (Component Object Model) exibindo seu Windows Form em um loop de mensagem do .NET Framework, que é criado usando o método Application.Run.
Para fazer um formulário funcionar corretamente a partir de um aplicativo cliente COM, você deve executá-lo em um loop de mensagem do Windows Forms. Para fazer isso, use uma das seguintes abordagens:
Use o método Form.ShowDialog para exibir o Windows Form;
Exiba cada Windows Form em um thread separado. Para obter mais informações, consulte Como oferecer suporte à interoperabilidade COM exibindo cada formulário do Windows em seu próprio thread.
Tramitação processual
Usar o método Form.ShowDialog pode ser a maneira mais fácil de exibir um formulário em um loop de mensagem do .NET Framework porque, de todas as abordagens, ele requer o mínimo de código para implementar.
O método Form.ShowDialog suspende o loop de mensagem do aplicativo não gerenciado e exibe o formulário como uma caixa de diálogo. Como o loop de mensagem do aplicativo host foi suspenso, o método Form.ShowDialog cria um novo loop de mensagem do .NET Framework para processar as mensagens do formulário.
A desvantagem de usar o método Form.ShowDialog é que o formulário será aberto como uma caixa de diálogo modal. Esse comportamento bloqueia qualquer interface do usuário (UI) no aplicativo de chamada enquanto o Windows Form está aberto. Quando o usuário sai do formulário, o loop de mensagem do .NET Framework é fechado e o loop de mensagem do aplicativo anterior começa a ser executado novamente.
Você pode criar uma biblioteca de classes no Windows Forms que tem um método para mostrar o formulário e, em seguida, criar a biblioteca de classes para interoperabilidade COM. Você pode usar esse arquivo DLL do Visual Basic 6.0 ou Microsoft Foundation Classes (MFC), e de qualquer um desses ambientes você pode chamar o método Form.ShowDialog para exibir o formulário.
Para dar suporte à interoperabilidade COM exibindo um formulário do Windows com o método ShowDialog
- Substitua todas as chamadas para o método Form.Show por chamadas para o método Form.ShowDialog no componente .NET Framework.
Ver também
.NET Desktop feedback