Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Resource : IDisposable
- {
- private IntPtr nativeResource = Marshal.AllocHGlobal(100);
- private AnotherResource managedResource = new AnotherResource();
- // Dispose() calls Dispose(true)
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
- // NOTE: Leave out the finalizer altogether if this class doesn't
- // own unmanaged resources itself, but leave the other methods
- // exactly as they are.
- ~Resource()
- {
- // Finalizer calls Dispose(false)
- Dispose(false);
- }
- // The bulk of the clean-up code is implemented in Dispose(bool)
- protected virtual void Dispose(bool disposing)
- {
- if (disposing)
- {
- // free managed resources
- if (managedResource != null)
- {
- managedResource.Dispose();
- managedResource = null;
- }
- }
- // free native resources if there are any.
- if (nativeResource != IntPtr.Zero)
- {
- Marshal.FreeHGlobal(nativeResource);
- nativeResource = IntPtr.Zero;
- }
- }
- }
Add Comment
Please, Sign In to add comment