Pergunta

Temos um problema de interop muito complicado em que o fio usado para inicializar um sistema de terceiros tem que ser o mesmo fio usado para encerrá-lo. Não fazer isso resulta em um impasse. Estamos realizando a interop de um serviço WCF hospedado no IIS. Atualmente, esta limpeza é feita à disposição e normalmente funciona muito bem. Infelizmente, sob carga pesada, o IIS fará um descarregamento rude e nunca conseguimos ligar para disposições. Podemos mover a lógica de desligamento em um finalizador crítico, mas isso não ajuda, pois não temos mais acesso ao tópico inicializando! Neste momento, nosso único recurso parece estar notificando o CLR que o AppDomain é agora provável em um estado corrompido. No entanto, não tenho certeza de como fazer isso (ou se é até possível). Pode ser que esta seja a utilidade dos contratos em um nível de classe, mas admito que realmente não entendo completamente esses.

Editar: Alternativamente, isso pode ser visto como um problema de afinidade de rosca no finalizador. Se alguém tem uma solução inteligente para isso, sou todos os ouvidos :)

Foi útil?

Solução

Tente dividir o código que depende dessa dependência nativa para um aplicativo de serviço do Windows independente, se possível.Se não puder funcionar bem com o WCF / IIS, você deve evitar os conflitos em vez de lutar contra ele.

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