Class UpgradeableReaderSynchronized<TRead>
  
  
  
  
    Inheritance
    System.Object
    UpgradeableReaderSynchronized<TRead>
   
  
  
  Assembly: InSync.dll
  Syntax
  
    public class UpgradeableReaderSynchronized<TRead> : object, ISynchronized<TRead>, IBareLock<TRead>, IBareLock where TRead : class
   
  Type Parameters
  
    
      
        | Name | 
        Description | 
      
    
    
      
        | TRead | 
        The type of the reader to protect. 
 | 
      
    
  
  Constructors
  
  
  UpgradeableReaderSynchronized(ReaderWriterLockSlim, TRead)
  
  
  Declaration
  
    public UpgradeableReaderSynchronized(ReaderWriterLockSlim readerWriterLockSlim, TRead reader)
   
  Parameters
  
    
      
        | Type | 
        Name | 
        Description | 
      
    
    
      
        | ReaderWriterLockSlim | 
        readerWriterLockSlim | 
         | 
      
      
        | TRead | 
        reader | 
         | 
      
    
  
  Fields
  
  reader
  
  
  Declaration
  
    protected readonly TRead reader
   
  Field Value
  
  readerWriterLockSlim
  
  
  Declaration
  
    protected readonly ReaderWriterLockSlim readerWriterLockSlim
   
  Field Value
  
    
      
        | Type | 
        Description | 
      
    
    
      
        | ReaderWriterLockSlim | 
         | 
      
    
  
  Methods
  
  
  BarelyLock()
  Synchronously acquires the lock and returns the protected non-null object.
 
  
  Declaration
  
    public TRead BarelyLock()
   
  Returns
  
    
      
        | Type | 
        Description | 
      
    
    
      
        | TRead | 
        The protected non-null object. 
 | 
      
    
  
  Exceptions
  
  
  BarelyTryLock(out TRead)
  Tries to acquire the lock. It returns true and the protected non-null object if the lock is acquired.
 
  
  Declaration
  
    public bool BarelyTryLock(out TRead value)
   
  Parameters
  
    
      
        | Type | 
        Name | 
        Description | 
      
    
    
      
        | TRead | 
        value | 
         | 
      
    
  
  Returns
  
    
      
        | Type | 
        Description | 
      
    
    
      
        | System.Boolean | 
        true if the lock is acquired. 
 | 
      
    
  
  Exceptions
  
  
  BarelyTryLock(Int32, out TRead)
  Tries to acquire the lock. It returns true and the protected non-null object if the lock is acquired.
 
  
  Declaration
  
    public bool BarelyTryLock(int millisecondsTimeout, out TRead value)
   
  Parameters
  
    
      
        | Type | 
        Name | 
        Description | 
      
    
    
      
        | System.Int32 | 
        millisecondsTimeout | 
        The number of milliseconds to wait,  (-1) to wait indefinitely, or zero to test the state of the wait handle and return immediately. 
 | 
      
      
        | TRead | 
        value | 
         | 
      
    
  
  Returns
  
    
      
        | Type | 
        Description | 
      
    
    
      
        | System.Boolean | 
        true if the lock is acquired. 
 | 
      
    
  
  Exceptions
  
  
  BarelyTryLock(TimeSpan, out TRead)
  Tries to acquire the lock. It returns true and the protected non-null object if the lock is acquired.
 
  
  Declaration
  
    public bool BarelyTryLock(TimeSpan timeout, out TRead value)
   
  Parameters
  
    
      
        | Type | 
        Name | 
        Description | 
      
    
    
      
        | TimeSpan | 
        timeout | 
        A  that represents the number of milliseconds to wait, a  that represents -1 milliseconds to wait indefinitely, or a  that represents 0 milliseconds to test the wait handle and return immediately. 
 | 
      
      
        | TRead | 
        value | 
         | 
      
    
  
  Returns
  
    
      
        | Type | 
        Description | 
      
    
    
      
        | System.Boolean | 
        true if the lock is acquired. 
 | 
      
    
  
  Exceptions
  
  
  BarelyUnlock()
  
  
  Declaration
  
    public void BarelyUnlock()
   
  Exceptions
  
  
  Lock()
  Locks and returns a guard to allow access of the protected object and unlocking.
 
  
  Declaration
  
    public GuardedValue<TRead> Lock()
   
  Returns
  
  Exceptions
  
  
  TryLock()
  Tries to lock and returns a guard to allow access of the protected object and unlocking. If the lock is not acquired, this method returns null immediately.
 
  
  Declaration
  
    public GuardedValue<TRead> TryLock()
   
  Returns
  
    
      
        | Type | 
        Description | 
      
    
    
      
        | GuardedValue<TRead> | 
        Null if the lock is not acquired. 
 | 
      
    
  
  Exceptions
  
  
  TryLock(Int32)
  Tries to lock and returns a guard to allow access of the protected object and unlocking. If the lock is not acquired, this method returns null immediately.
 
  
  Declaration
  
    public GuardedValue<TRead> TryLock(int millisecondsTimeout)
   
  Parameters
  
    
      
        | Type | 
        Name | 
        Description | 
      
    
    
      
        | System.Int32 | 
        millisecondsTimeout | 
        The number of milliseconds to wait,  (-1) to wait indefinitely, or zero to test the state of the wait handle and return immediately. 
 | 
      
    
  
  Returns
  
    
      
        | Type | 
        Description | 
      
    
    
      
        | GuardedValue<TRead> | 
        Null if the lock is not acquired. 
 | 
      
    
  
  Exceptions
  
  
  TryLock(TimeSpan)
  Tries to lock and returns a guard to allow access of the protected object and unlocking. If the lock is not acquired, this method returns null immediately.
 
  
  Declaration
  
    public GuardedValue<TRead> TryLock(TimeSpan timeout)
   
  Parameters
  
    
      
        | Type | 
        Name | 
        Description | 
      
    
    
      
        | TimeSpan | 
        timeout | 
        A  that represents the number of milliseconds to wait, a  that represents -1 milliseconds to wait indefinitely, or a  that represents 0 milliseconds to test the wait handle and return immediately. 
 | 
      
    
  
  Returns
  
    
      
        | Type | 
        Description | 
      
    
    
      
        | GuardedValue<TRead> | 
        Null if the lock is not acquired. 
 | 
      
    
  
  Exceptions
  
  
  TryWithLock(Action<TRead>)
  Tries to lock and performs the action then unlocks. If the lock is not acquired, this method returns immediately. If the action throws an exception, the lock is released automatically.
 
  
  Declaration
  
    public bool TryWithLock(Action<TRead> action)
   
  Parameters
  
    
      
        | Type | 
        Name | 
        Description | 
      
    
    
      
        | Action<TRead> | 
        action | 
         | 
      
    
  
  Returns
  
    
      
        | Type | 
        Description | 
      
    
    
      
        | System.Boolean | 
        true the action is performed. 
 | 
      
    
  
  Exceptions
  
  
  TryWithLock(Int32, Action<TRead>)
  Tries to lock and performs the action then unlocks. If the lock is not acquired, this method returns immediately. If the action throws an exception, the lock is released automatically.
 
  
  Declaration
  
    public bool TryWithLock(int millisecondsTimeout, Action<TRead> action)
   
  Parameters
  
    
      
        | Type | 
        Name | 
        Description | 
      
    
    
      
        | System.Int32 | 
        millisecondsTimeout | 
        The number of milliseconds to wait,  (-1) to wait indefinitely, or zero to test the state of the wait handle and return immediately. 
 | 
      
      
        | Action<TRead> | 
        action | 
         | 
      
    
  
  Returns
  
    
      
        | Type | 
        Description | 
      
    
    
      
        | System.Boolean | 
        true the action is performed. 
 | 
      
    
  
  Exceptions
  
  
  TryWithLock(TimeSpan, Action<TRead>)
  Tries to lock and performs the action then unlocks. If the lock is not acquired, this method returns immediately. If the action throws an exception, the lock is released automatically.
 
  
  Declaration
  
    public bool TryWithLock(TimeSpan timeout, Action<TRead> action)
   
  Parameters
  
    
      
        | Type | 
        Name | 
        Description | 
      
    
    
      
        | TimeSpan | 
        timeout | 
        A  that represents the number of milliseconds to wait, a  that represents -1 milliseconds to wait indefinitely, or a  that represents 0 milliseconds to test the wait handle and return immediately. 
 | 
      
      
        | Action<TRead> | 
        action | 
         | 
      
    
  
  Returns
  
    
      
        | Type | 
        Description | 
      
    
    
      
        | System.Boolean | 
        true the action is performed. 
 | 
      
    
  
  Exceptions
  
  
  WithLock(Action<TRead>)
  Locks, performs the action then unlocks. If the action throws an exception, the lock is released automatically.
 
  
  Declaration
  
    public void WithLock(Action<TRead> action)
   
  Parameters
  
    
      
        | Type | 
        Name | 
        Description | 
      
    
    
      
        | Action<TRead> | 
        action | 
         | 
      
    
  
  Exceptions
  
  
  WithLock<TResult>(Func<TRead, TResult>)
  Locks, call the function then unlocks. The returned value from the function is returned. If the function throws an exception, the lock is released automatically.
 
  
  Declaration
  
    public TResult WithLock<TResult>(Func<TRead, TResult> func)
   
  Parameters
  
    
      
        | Type | 
        Name | 
        Description | 
      
    
    
      
        | Func<TRead, TResult> | 
        func | 
         | 
      
    
  
  Returns
  
    
      
        | Type | 
        Description | 
      
    
    
      
        | TResult | 
        The returned value from the function. 
 | 
      
    
  
  Type Parameters
  
  Exceptions
  
  Explicit Interface Implementations
  
  
  IBareLock.BarelyLock()
  
  
  Declaration
  
    object IBareLock.BarelyLock()
   
  Returns
  
    
      
        | Type | 
        Description | 
      
    
    
      
        | System.Object | 
         | 
      
    
  
  
  IBareLock.BarelyTryLock(Int32, out Nullable<Object>)
  
  
  Declaration
  
    bool IBareLock.BarelyTryLock(int millisecondsTimeout, out object? value)
   
  Parameters
  
    
      
        | Type | 
        Name | 
        Description | 
      
    
    
      
        | System.Int32 | 
        millisecondsTimeout | 
         | 
      
      
        | System.Nullable<System.Object> | 
        value | 
         | 
      
    
  
  Returns
  
    
      
        | Type | 
        Description | 
      
    
    
      
        | System.Boolean | 
         | 
      
    
  
  
  IBareLock.BarelyTryLock(out Nullable<Object>)
  
  
  Declaration
  
    bool IBareLock.BarelyTryLock(out object? value)
   
  Parameters
  
    
      
        | Type | 
        Name | 
        Description | 
      
    
    
      
        | System.Nullable<System.Object> | 
        value | 
         | 
      
    
  
  Returns
  
    
      
        | Type | 
        Description | 
      
    
    
      
        | System.Boolean | 
         | 
      
    
  
  
  IBareLock.BarelyTryLock(TimeSpan, out Nullable<Object>)
  
  
  Declaration
  
    bool IBareLock.BarelyTryLock(TimeSpan timeout, out object? value)
   
  Parameters
  
    
      
        | Type | 
        Name | 
        Description | 
      
    
    
      
        | TimeSpan | 
        timeout | 
         | 
      
      
        | System.Nullable<System.Object> | 
        value | 
         | 
      
    
  
  Returns
  
    
      
        | Type | 
        Description | 
      
    
    
      
        | System.Boolean | 
         | 
      
    
  
  Implements