// // // // // $Revision$ // using System; using System.Threading; namespace ICSharpCode.Core { /// /// Invokes a callback when this class is dispsed. /// sealed class CallbackOnDispose : IDisposable { // TODO: in 4.0, use System.Action and make this class public System.Threading.ThreadStart callback; public CallbackOnDispose(System.Threading.ThreadStart callback) { if (callback == null) throw new ArgumentNullException("callback"); this.callback = callback; } public void Dispose() { System.Threading.ThreadStart action = Interlocked.Exchange(ref callback, null); if (action != null) action(); } } }