|
|
|

|

|
Dicas
|

|
Visual Basic.Net (ActiveX/Controles/DLL)
|
|
 |
Título da Dica: Libere corretamente componentes COM
|
 |
|
|
Postada em 6/10/2003 por ~Ð@®£@Ñ
Você com certeza já deve conhecer o funcionamento do garbage collector do Framework .NET, que faz com que um objeto não seja realmente liberado no momento que atribuimos nothing a ele.
Para os objetos CLS, que possuem o método Dispose para liberar seus recursos mais críticos, isso não é grande problema. Mas para componentes COM, em especial aqueles que possuem código a ser executado no class_terminate, isso pode ser um problema grande.
Para resolver, basta lembrar que o acesso do .NET a componentes COM é feito através de um recurso chamado de COM Interop. Este mesmo recurso nos fornece os meios de que necessitamos para liberar um componente COM, veja :
' Definição de um objeto COM Dim obj As New MyComLibrary.MyComObject ' Utilização do objeto ' ... ' Forçar a eliminação do objeto System.Runtime.InteropServices.Marshal.ReleaseComObject(obj) obj = Nothing
Se você tiver dúvidas se uma determinada variável realmente aponta para um objeto COM, pode testar isso, veja :
If Marshal.IsComObject(obj) Then Marshal.ReleaseComObject(obj) End If
|
|
|
|

|