Mercurial > pub > ImplabNet
view Implab/Disposable.cs @ 45:d10034588e38 interactive logger
initial work on interactive logger
author | cin |
---|---|
date | Thu, 17 Apr 2014 03:05:53 +0400 |
parents | fe33f4e02ad5 |
children | d9d794b61bb9 |
line wrap: on
line source
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Web; namespace Implab { public class Disposable : IDisposable { bool m_disposed; public event EventHandler Disposed; public bool IsDisposed { get { return m_disposed; } } protected void AssertNotDisposed() { if (m_disposed) throw new ObjectDisposedException(this.ToString()); } protected virtual void Dispose(bool disposing) { if (disposing && !m_disposed) { m_disposed = true; EventHandler temp = Disposed; if (temp != null) temp(this,EventArgs.Empty); } } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void ReportObjectLeaks() { Trace.TraceWarning("The object is marked as disposable but isn't disposed properly: {0}", this); } ~Disposable() { Dispose(false); ReportObjectLeaks(); } } }