O que eu preciso fazer para implementar um "fora do proc" COM server em C#?

StackOverflow https://stackoverflow.com/questions/30653

  •  09-06-2019
  •  | 
  •  

Pergunta

Estou tentando implementar um "fora do proc" COM servidor escrito em C#.Como eu faço isso?

Eu preciso de código C# para ser "fora do proc" meu principal aplicativo de C++, porque eu não posso carregar o .Tempo de execução NET no meu processo principal espaço

POR quê?:
Meu código C++ está em uma DLL é carregada em diversas cliente EXE, algumas das quais utilizam diferentes versões .Tempo de execução NET.Como só pode ser um tempo de execução carregado em um único processo, a minha melhor aposta parece ser a de colocar o meu código C# em outro processo.

Foi útil?

Solução

Você pode criar componentes COM+ usando o Sistema.EnterpriseServices.ServicedComponent.Conseqüentemente, você será capaz de criar um fora-de-proc e-proc (cliente) a ativação do componente, bem como todos os+ benefícios de agrupamento, de sistema de interacção remota, é executado como um serviço do windows, etc.

Outras dicas

Aqui podemos ler que é possível, mas o exe será carregado como uma biblioteca e não começou em seu próprio processo como um exe.Eu não sei se isso é um problema para você?Ele também contém algumas soluções possíveis se o que você quer fazer é agir como um verdadeiro fora do processo de servidor com.Mas talvez usando outra forma de comunicação entre processos é melhor.Gosta .Líquido De Sistema De Interacção Remota.

Eu não posso recomendar este como a forma, mas você pode criar um COM callable wrapper para o seu C# biblioteca e, em seguida, criar um VB6 projecto exe ActiveX que os delegados de chamadas para o seu C# biblioteca.

Por que você não pode carregar .líquido de tempo de execução para o processo de espaço?É possível hospedar o .tempo de execução net e chamar .net usando COM.

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