public static void Main()
Console.WriteLine("Get A Disposable");
WithMyDisposable(myDisposable => {
Console.WriteLine("Are The Managed Resources Disposed on object: " + myDisposable.IsManagedResourcesDisposed.ToString());
Console.WriteLine("Are The Unmanaged Resources Disposed on object: " + myDisposable.IsUnmanagedResourcesDisposed.ToString());
public static void WithMyDisposable(Action<MyDisposable> action )
Console.WriteLine("Creating Disposable");
using (var disposable = new MyDisposable())
public class MyDisposable : IDisposable
public bool IsManagedResourcesDisposed { get; private set; }
public bool IsUnmanagedResourcesDisposed { get; private set; }
protected virtual void Dispose(bool disposing)
IsManagedResourcesDisposed = true;
Console.WriteLine("Disposing of Managed Resources");
IsUnmanagedResourcesDisposed = true;
Console.WriteLine("Disposing of Unmanaged Resources");
GC.SuppressFinalize(this);