123456789101112131415161718192021222324252627282930313233343536373839404142 |
- using System;
- using System.Collections.Generic;
- using System.Runtime.InteropServices;
- using System.Linq;
- namespace Helper
- {
- public class SmartGCHandle : IDisposable
- {
- private GCHandle handle;
- public SmartGCHandle(GCHandle handle)
- {
- this.handle = handle;
- }
- ~SmartGCHandle()
- {
- Dispose(false);
- }
- public System.IntPtr AddrOfPinnedObject()
- {
- return handle.AddrOfPinnedObject();
- }
- public virtual void Dispose()
- {
- Dispose(true);
- }
- protected virtual void Dispose(bool disposing)
- {
- this.handle.Free();
- }
- public static implicit operator GCHandle(SmartGCHandle other)
- {
- return other.handle;
- }
- }
- }
|