Pergunta

Existe uma maneira de descarregar o .NET AppDomain padrão de um aplicativo não gerenciado?

Estou usando uma ferramenta de terceiros chamada .NET Extender Para usar os conjuntos .NET de dentro do Visual FoxPro, o que me permite hospedar controles .NET e também usar as classes e métodos .NET de um ambiente da FoxPro.

O problema que estou tendo é que, ao depurar um aplicativo no Visual FoxPro, ele executa o tudo sob o arquivo de aplicativo principal do VFP9.exe para o IDE e parece que as lidar com meus assemblies gerenciados não são lançados. Então, quando eu faço uma alteração nesses conjuntos .NET e quero atualizá -los, tenho que fechar o IDE do VFP e reabri -lo, caso contrário, recebo uma violação de compartilhamento ao tentar substituir os arquivos.

Comecei a procurar maneiras de garantir que os controles sejam descartados, mas então me deparei Este artigo de Rick Strahl Onde ele basicamente descreve que o problema é realmente que o principal aplicativo não está descarregado. Depois de analisar as informações sobre como descarregar o aplicativo padrão, cheguei à conclusão de que isso não é possível pelo menos de um aplicativo gerenciado, mas é possível para um aplicativo não gerenciado. Meu pensamento é que, apenas porque um aplicativo não gerenciado usou um recurso .NET, ele não deve continuar carregando o AppDomain e a bagagem de tempo de execução.

Foi útil?

Solução

Esta pergunta foi respondida no Fóruns do MSDN E, infelizmente, parece que isso não é possível e que um processo deve ser encerrado para liberar recursos, incluindo domínios de aplicativos. Isso é descrito no Documentação para o iclrruntimehost.stop Método da interface em que afirma "esse método não libera recursos para o host, descarregar domínios de aplicativos ou destruir threads. Você deve encerrar o processo para liberar esses recursos".

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