Sem Categoria


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

Vou começar a blogar tudo que acontece aqui no meu mundo do desenvolvimento, onde trabalho diáriamente hands on com aplicações para web, desktop, mobile, webservices, etc.

Desafios, novidades, dicas e truques. O mais difícil de tudo é encontrar tempo, mas vou tentar fazer com que tão logo uma solução para qualquer problema que seja, for dada, eu blogo na mesma hora.

O próximo post carrega a primeira…

See ya!

- Próxima Página »