// Needed for NET40 #if !NET_4_6 using System; using LinqInternal.Core; namespace LinqInternal.Threading { [System.Diagnostics.DebuggerNonUserCode] public sealed partial class Disposable { private Action _release; private Disposable(Action release) { if (release == null) { throw new ArgumentNullException("release"); } _release = release; } public static Disposable Create() { return new Disposable(ActionHelper.GetNoopAction()); } public static Disposable Create(Action release) { return new Disposable(release); } public bool Dispose(Func condition) { if (condition == null) { throw new ArgumentNullException("condition"); } return DisposedConditional ( FuncHelper.GetFallacyFunc(), () => { if (condition.Invoke()) { Dispose(); return true; } else { return false; } } ); } } } #endif