Mercurial > pub > ImplabNet
view Implab/Disposable.cs @ 40:fe33f4e02ad5
improved tracing
added text listeners (file,console)
author | cin |
---|---|
date | Tue, 15 Apr 2014 17:52:09 +0400 |
parents | |
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(); } } }