private InternalCustomRoLockedResource([NotNull] TVault v, [NotNull] Box b, [NotNull] Func <TVault, Box, AcquisitionMode, Box> disposeMethod) { Debug.Assert(b != null && v != null && disposeMethod != null); _box = b; _disposeMethod = disposeMethod; _flag = new LockedResources.DisposeFlag(); _vault = v; }
private InternalCustomUpgradableRoLockedResource([NotNull] TVault v, [NotNull] Box b, [NotNull] Func <TVault, Box, AcquisitionMode, Box> disposeMethod, [NotNull] Action <TimeSpan?, CancellationToken> upgradeAction, [NotNull] Action upgradeForeverAction) { Debug.Assert(b != null && v != null && disposeMethod != null && upgradeAction != null && upgradeForeverAction != null); _box = b; _disposeMethod = disposeMethod; _flag = new LockedResources.DisposeFlag(); _vault = v; _upgradeWithWait = upgradeAction; _upgradeForever = upgradeForeverAction; }