Bombas de mensagens e AppDomains

Eu tenho um aplicativo C # (FFx 3.5) que carrega DLLs como plug-ins. Esses plug-ins são carregados em AppDomains separados (por muitas boas razões, e essa arquitetura não pode ser alterada). Está tudo bem e bom.

Agora eu tenho um requisito para mostrar uma caixa de diálogo de um desses plug-ins. Tenha em mente que eunão podes retorne o formulário da caixa de diálogo para o aplicativo principal e faça com que seja exibido lá (a infraestrutura atual não oferece suporte).

Falha 1

Na minha DLL, criei um formulário e chamei Show. O contorno da caixa de diálogo apareceu, mas não foi pintado e não responde aos eventos do mouse. Eu assumi que isso ocorre porque a DLL está em um AppDomain separado e a bomba de mensagens do aplicativo não consegue enviar mensagens para o novo formulário.

Falha 2

Na minha DLL, criei um Form e chamei ShowDialog, que por todos os direitos deve criar uma bomba de mensagem interna para a caixa de diálogo. A caixa de diálogo é exibida e responde a cliques (viva), mas parece que o aplicativo principal não está mais processando ou despachar mensagens do Windows porque encerra a pintura e não responde mais a eventos do mouse. Por alguma razão, agora parece que a bomba de mensagens do aplicativo principal não está sendo enviada.

Falha 3

Na minha DLL, criei um formulário e chamei Application.Run. Isso certamente criará uma bomba de segunda mensagem completa. Recebo o mesmo comportamento que a Falha 2 - o Diálogo se comporta, mas o aplicativo de chamada não.

Alguma idéia do que exatamente está acontecendo aqui e como eu posso mostrar uma caixa de diálogo da DLL do outro AppDomain e fazer com que o chamador e o destinatário ainda respondam e pintem corretamente?

questionAnswers(2)

yourAnswerToTheQuestion