Mega Code Archive

 
Categories / VB.Net / Data Structure
 

Dispose - called when we need disposing

Imports System Imports System.Drawing Imports System.Data Imports System.IO Imports System.Collections Imports System.Windows.Forms Imports System.Drawing.Printing Public Class MainClass     Shared Sub Main()         Dim file As New MyFile("c:\FinalizeDemo.txt")         file.AddText("Hello, world!")         ' now, clear the reference to the object...         file.Dispose()         file = Nothing         ' wait for the user to press return...         Console.WriteLine("Press Return to collect the garbage...")         ' force a collect...         GC.Collect()         ' wait for the user to quit...         Console.WriteLine("Press Return to quit...")     End Sub End Class Public Class MyFile     Implements IDisposable     Private stream As FileStream     Private isDisposed As Boolean     Public Sub New(ByVal filename As String)         stream = New FileStream("test.txt", FileMode.OpenOrCreate)         Console.WriteLine("Object " & GetHashCode() & " created.")         Console.WriteLine("Using file: " & filename)     End Sub     Public Sub AddText(ByVal buf As String)         If isDisposed = True Then             Throw New ObjectDisposedException("I've been disposed!")         End If         Dim writer As New StreamWriter(stream)         writer.WriteLine(Date.Now)         writer.WriteLine(buf)         writer.Close()     End Sub     Public Sub Dispose() Implements System.IDisposable.Dispose         If isDisposed = True Then Return                  stream.Close()         stream = Nothing         isDisposed = True         GC.SuppressFinalize(Me)         Console.WriteLine("Object " & GetHashCode() & " disposed.")     End Sub     Protected Overrides Sub Finalize()         Dispose()         Console.WriteLine("Object " & GetHashCode() & " finalized.")     End Sub End Class