public static void ExecuteWriteLocked(this ReaderWriterLock readerWriterLock, Action operation)
 {
     readerWriterLock.ExecuteLocked(TimeSpan.FromSeconds(1.0), new Action <TimeSpan>(readerWriterLock.AcquireWriterLock), () => readerWriterLock.IsWriterLockHeld,
                                    new Action(readerWriterLock.ReleaseWriterLock), new Func <object>(() =>
     {
         operation();
         return(null);
     }));
 }
 public static T ExecuteWriteLocked <T>(this ReaderWriterLock readerWriterLock, Func <T> operation)
 {
     return(readerWriterLock.ExecuteLocked(TimeSpan.FromSeconds(1.0), new Action <TimeSpan>(readerWriterLock.AcquireWriterLock), () => readerWriterLock.IsWriterLockHeld,
                                           new Action(readerWriterLock.ReleaseWriterLock), operation));
 }