Qua 14 Mai 2008
Estava integrando minha aplicação Desktop em C# com uma DLL produzida no Builder C++, utilizando recursos não gerenciandos (Unsafe).
Essa DLL cria alguns filtros para o DirectShow, já que a Microsoft recomenda fortemente que os filtros não sejam escritos em .NET, embora seja totalmente possível.
Em um certo ponto, eu passo uma delegate para a DLL, que por sua vez, fará chamadas assíncronas para o meu método.
O problema é que o Garbage Collector vem e limpa a referência dessa minha delegate, e quando o método recebe uma chamada assíncrona da pau.
SOLUÇÂO: Para resolver isso, guarde a referência da instância da sua delegate que foi alocada num atributo PRIVATE, antes de passar ela para ser consumida no código nativo. Isso vai fazer com que o GC não a limpe.
See ya
Márcio Sete
Enviar por e-mail. Hits para esta publicação: 195.
Deixe uma resposta.
Você deve estar conectado para publicar um comentário.