public void Dispose() { var disposeActions = new List <Action> { _reopener.Dispose, _committer.Dispose, Manager.Dispose, () => _writer.Dispose(true) }; disposeActions.AddRange(_threads.Select(t => (Action)t.Join)); DisposeUtil.PostponeExceptions(disposeActions.ToArray()); }