private O ReadOperation <O>(Func <O> operation) { readWriteLock.EnterRead(); try { return(operation()); } finally { readWriteLock.ExitRead(); } }