Here is code from MSDN-Library April 2003 which I tried to implement to my class but there was some error that I don't know how to solve it. In Privete Overloads Sub Dispose(ByVal disposing Boolean), the code call component.Dispose() method but the VS said that 'System.ComponentModel.Component.Protected Overrridable Sub Dispose(disposing As Boolean)' is not accessible in this context because it is 'Protected'. I don't know this code is from .NET Framework 1.0 and not yet update for 1.1 or not. If anyone know how can I correct this error, please let me know.

Thank you,
Teeravee Sirinapasawasdee
VB Code:
  1. Imports System
  2. Imports System.ComponentModel
  3.  
  4. Public Class DisposeExample
  5.     Public Class MyResource
  6.         Implements IDisposable
  7.  
  8.         Private handle As IntPtr
  9.         Private component As component
  10.         Private disposed As Boolean = False
  11.  
  12.         Public Sub New(ByVal handle As IntPtr)
  13.             Me.handle = handle
  14.         End Sub
  15.  
  16.         Public Overloads Sub Dispose() Implements IDisposable.Dispose
  17.             Dispose(True)
  18.             GC.SuppressFinalize(Me)
  19.         End Sub
  20.  
  21.         Private Overloads Sub Dispose(ByVal disposing As Boolean)
  22.             If Not Me.disposed Then
  23.                 If disposing Then
  24.                     component.Dispose() <-- There was error here!
  25.                 End If
  26.                 CloseHandle(handle)
  27.                 handle = IntPtr.Zero
  28.             End If
  29.             disposed = True
  30.         End Sub
  31.  
  32.         <System.Runtime.InteropServices.DllImport("Kernel32")> _
  33.         Private Shared Function CloseHandle(ByVal handle As IntPtr) As [Boolean]
  34.         End Function
  35.  
  36.         Protected Overrides Sub Finalize()
  37.             Dispose(False)
  38.             MyBase.Finalize()
  39.         End Sub
  40.     End Class
  41. End Class