public void Replace(Func <T, T> replacer) { using (var manager = new LockManager(resourceLock)) { manager.EnterWriteLock(); var resource = GetResource(); var newResource = replacer(resource); SaveResource(newResource, filename); } }
public ResourceWriter(Func <T> resource, ReaderWriterLockSlim resourceLock, Action <T> save) { try { manager = new LockManager(resourceLock); manager.EnterWriteLock(); Resource = resource(); this.save = save; } catch { manager.Dispose(); throw; } }