Liberando Recursos com IDisposable

by Jenner Maciejewsky 4. março 2008 07:29

Uma preocupação que todo desenvolvedor sempre tem é com o gerenciamento de recursos de Memória. Essa preocupação já foi maior principalmente quando você precisava até mesmo de informar o endereço de memória a ser usado, preocupar com o total de memória que sua aplicação estaria alocando.

 

Apesar do .NET ter recursos para gerenciar automaticamente a memória, fazendo a coleta de lixo na memória (Garbage Collector), ainda assim é preciso tomar cuidado com classes que alocam muitos recursos do sistema, uma vez que o Garbage Collector (GC) não faz a limpeza imediatamente assim que a aplicação deixa de utilizá-lo.

 

Para ajudar o desenvolvedor o .NET permite o uso do Dispose que permite a liberação imediata do recurso alocado, para isso sua classe precisa implementar a interface System.Idisposable.

 

Code Snippet
  1. ' A defini??o do IDisposable
  2. Public Interface IDisposable
  3.     Sub Dispose()
  4.  
  5. End Interface


Um Exemplo de como implementar o IDisposable em sua Classe

 

Code Snippet
  1. Imports System
  2.  
  3. Public Class MinhaClasse
  4.     Implements IDisposable
  5.     Private disposedValue As Boolean = False        ' Utilizado para controlar redundancia de chamadas    
  6.     ' IDisposable    
  7.     Protected Overridable Sub Dispose(ByVal disposing As Boolean)
  8.  
  9.         If Not Me.disposedValue Then
  10.             If disposing Then
  11.             End If
  12.  
  13.             Console.WriteLine("Objeto Liberado")
  14.             Me.disposedValue = True
  15.  
  16.         End If
  17.     End Sub
  18.  
  19.     ' Esse codigo foi adicionado pelo Visual Basic para correta implementa??o do padr?o disposable.
  20.     Public Sub Dispose() Implements IDisposable.Dispose        ' N?o altere do codigo abaixo.       
  21.  
  22.         Dispose(True)
  23.         GC.SuppressFinalize(Me)
  24.     End Sub
  25.     Public Sub Mensagem()
  26.         Console.WriteLine("Esta ? a MinhaClasse")
  27.     End Sub
  28. End Class
  29.  
  30.  
  31. ' Codigo que demonstra o uso do Dispose
  32. Public Class EntryPoint
  33.  
  34.  
  35.     Shared Sub Main()
  36.  
  37.  
  38.         Dim a As MinhaClasse = New MinhaClasse 'Cria o objeto MinhaClasse   
  39.         Try
  40.  
  41.  
  42.             a.Mensagem() 'Chama um metodo do Objeto       
  43.         Finally
  44.             a.Dispose()  'Chama o Metodo Dispose do Objeto   
  45.         End Try
  46.     End Sub
  47. End Class

 

Mais informações:


Recomendação de Livros:

Appress.VB.Accelerated.VB.2005 Titulo: Accelerated VB 2005
Editora: Apress
Autor: Guy Fouché e Trey Nash
ISBN 13: 978-1-59059-801-6
ISBN 10: 1-59059-801-6


 

9781590595763

Titulo: Beginning Object-Oriented Programming with VB 2005: From Novice to Professional
Editora: Apress
Autor: Daniel R. Clark
ISBN 13: 978-1-59059-576-3
ISBN 10: 1-59059-576-9


 

Jenner Maciejewsky Rocha 
MVP Visual Basic 


 

 

 

 

Tags: , ,

Blog | VBNET | General | MSDN | DICAS

Os comentários estão fechados

Posts Antigos

Awards