• Performance
  • API Documentation
  • Source Code
Show / Hide Table of Contents
  • InSync
    • AsyncSynchronized
    • AsyncSynchronized<T>
    • GuardedValue<T>
    • IAsyncSynchronized<T>
    • IBareAsyncLock
    • IBareAsyncLock<T>
    • IBareLock
    • IBareLock<T>
    • ISynchronized<T>
    • LockException
    • MultiSync
    • ReaderSynchronized<TRead>
    • ReaderWriterSynchronized<T>
    • ReaderWriterSynchronized<TWrite, TRead>
    • ReaderWriterSynchronizedFactory
    • Synchronized
    • Synchronized<T>
    • TimingMethod
    • UnlockException
    • UpgradeableReaderSynchronized<TRead>
    • ValueContainer<T>

Class AsyncSynchronized<T>

Uses to synchronize and only expose its protected object after a synchronization begins.

Various asynchronous operations are supported. Reentrant is not supported. The protected object is non-null.

Inheritance
System.Object
AsyncSynchronized<T>
Implements
ISynchronized<T>
IAsyncSynchronized<T>
IBareLock<T>
IBareLock
IBareAsyncLock<T>
IBareAsyncLock
Namespace: InSync
Assembly: InSync.dll
Syntax
public class AsyncSynchronized<T> : object, ISynchronized<T>, IAsyncSynchronized<T>, IBareLock<T>, IBareLock, IBareAsyncLock<T>, IBareAsyncLock where T : class
Type Parameters
Name Description
T

The type of the protected object.

Constructors

AsyncSynchronized(SemaphoreSlim, T)

Initializes a AsyncSynchronized<T> with the specified and object to protect.

Declaration
public AsyncSynchronized(SemaphoreSlim semaphore, T value)
Parameters
Type Name Description
SemaphoreSlim semaphore

The semaphore for synchronization.

T value

The object to protect.

Fields

semaphore

The semaphore for synchronization.

Declaration
protected readonly SemaphoreSlim semaphore
Field Value
Type Description
SemaphoreSlim

value

The non-null object to protect.

Declaration
protected readonly T value
Field Value
Type Description
T

Methods

BarelyLock()

Synchronously acquires the lock and returns the protected non-null object.

Declaration
public T BarelyLock()
Returns
Type Description
T

The protected non-null object.

Exceptions
Type Condition
LockException

BarelyLockAsync()

Asynchronously acquires the lock and returns the protected non-null value.

Declaration
public Task<T> BarelyLockAsync()
Returns
Type Description
Task<T>

The protected non-null value.

Exceptions
Type Condition
LockException

BarelyLockAsync(CancellationToken)

Asynchronously acquires the lock and returns the protected non-null value.

Declaration
public Task<T> BarelyLockAsync(CancellationToken cancellationToken)
Parameters
Type Name Description
CancellationToken cancellationToken
Returns
Type Description
Task<T>

The protected non-null value.

Exceptions
Type Condition
LockException

BarelyTryLock(out T)

Tries to acquire the lock. It returns true and the protected non-null object if the lock is acquired.

Declaration
public bool BarelyTryLock(out T value)
Parameters
Type Name Description
T value

The protected non-null object if the lock is acquired, otherwise, null is returned.

Returns
Type Description
System.Boolean

true if the lock is acquired.

Exceptions
Type Condition
LockException

BarelyTryLock(Int32, out T)

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 T 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.

T value

The protected non-null object if the lock is acquired, otherwise, null is returned.

Returns
Type Description
System.Boolean

true if the lock is acquired.

Exceptions
Type Condition
LockException

BarelyTryLock(TimeSpan, out T)

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 T 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.

T value

The protected non-null object if the lock is acquired, otherwise, null is returned.

Returns
Type Description
System.Boolean

true if the lock is acquired.

Exceptions
Type Condition
LockException

BarelyUnlock()

Releases the lock.

Declaration
public void BarelyUnlock()
Exceptions
Type Condition
UnlockException

Lock()

Locks and returns a guard to allow access of the protected object and unlocking.

Declaration
public GuardedValue<T> Lock()
Returns
Type Description
GuardedValue<T>
Exceptions
Type Condition
LockException

LockAsync()

Asynchronously locks and returns a guard to allow access of the protected object and unlocking.

Declaration
public Task<GuardedValue<T>> LockAsync()
Returns
Type Description
Task<GuardedValue<T>>
Exceptions
Type Condition
LockException

LockAsync(CancellationToken)

Asynchronously locks and returns a guard to allow access of the protected object and unlocking.

Declaration
public Task<GuardedValue<T>> LockAsync(CancellationToken cancellationToken)
Parameters
Type Name Description
CancellationToken cancellationToken
Returns
Type Description
Task<GuardedValue<T>>
Exceptions
Type Condition
LockException

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<T> TryLock()
Returns
Type Description
GuardedValue<T>

Null if the lock is not acquired.

Exceptions
Type Condition
LockException

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<T> 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<T>

Null if the lock is not acquired.

Exceptions
Type Condition
LockException

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<T> 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<T>

Null if the lock is not acquired.

Exceptions
Type Condition
LockException

TryWithLock(Action<T>)

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<T> action)
Parameters
Type Name Description
Action<T> action

The protected object is supplied as the argument of the action

Returns
Type Description
System.Boolean

true the action is performed.

Exceptions
Type Condition
LockException
UnlockException

TryWithLock(Int32, Action<T>)

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<T> 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<T> action

The protected object is supplied as the argument of the action

Returns
Type Description
System.Boolean

true the action is performed.

Exceptions
Type Condition
LockException
UnlockException

TryWithLock(TimeSpan, Action<T>)

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<T> 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<T> action

The protected object is supplied as the argument of the action

Returns
Type Description
System.Boolean

true the action is performed.

Exceptions
Type Condition
LockException
UnlockException

WithLock(Action<T>)

Locks, performs the action then unlocks. If the action throws an exception, the lock is released automatically.

Declaration
public void WithLock(Action<T> action)
Parameters
Type Name Description
Action<T> action

The protected object is supplied as the argument of the action

Exceptions
Type Condition
LockException
UnlockException

WithLock<TResult>(Func<T, 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<T, TResult> func)
Parameters
Type Name Description
Func<T, TResult> func

The protected object is supplied as the argument of the function. The returned value is returned by this method.

Returns
Type Description
TResult

The returned value from the function.

Type Parameters
Name Description
TResult
Exceptions
Type Condition
LockException
UnlockException

WithLockAsync(Action<T>)

Asynchronously locks, performs the action on the captured context or task scheduler (if any) then unlocks. If the action throws an exception, the lock is released automatically.

Declaration
public Task WithLockAsync(Action<T> action)
Parameters
Type Name Description
Action<T> action

The protected object is supplied as the argument of the action

Returns
Type Description
Task
Exceptions
Type Condition
LockException
UnlockException

WithLockAsync(Action<T>, CancellationToken)

Asynchronously locks, performs the action on the captured context or task scheduler (if any) then unlocks. If the function throws an exception, the lock is released automatically.

Declaration
public Task WithLockAsync(Action<T> action, CancellationToken cancellationToken)
Parameters
Type Name Description
Action<T> action

The protected object is supplied as the argument of the action

CancellationToken cancellationToken
Returns
Type Description
Task
Exceptions
Type Condition
LockException
UnlockException

WithLockAsync(Action<T>, CancellationToken, Boolean)

Asynchronously locks, synchronously performs the action then unlocks. If the function throws an exception, the lock is released automatically.

Declaration
public Task WithLockAsync(Action<T> action, CancellationToken cancellationToken, bool onCapturedContext)
Parameters
Type Name Description
Action<T> action

The protected object is supplied as the argument of the action

CancellationToken cancellationToken
System.Boolean onCapturedContext

true to perform the action on the original context or task scheduler if there is a context.

Returns
Type Description
Task
Exceptions
Type Condition
LockException
UnlockException

WithLockAsync(Action<T>, Boolean)

Asynchronously locks, performs the action then unlocks. If the action throws an exception, the lock is released automatically.

Declaration
public Task WithLockAsync(Action<T> action, bool onCapturedContext)
Parameters
Type Name Description
Action<T> action

The protected object is supplied as the argument of the action

System.Boolean onCapturedContext

true to perform the action on the original context or task scheduler if there is a context.

Returns
Type Description
Task
Exceptions
Type Condition
LockException
UnlockException

WithLockAsync(Func<T, Task>)

Asynchronously locks, performs the action on the captured context or task scheduler (if any) then unlocks. If the action throws an exception, the lock is released automatically.

Declaration
public Task WithLockAsync(Func<T, Task> asyncAction)
Parameters
Type Name Description
Func<T, Task> asyncAction

The protected object is supplied as the argument of the action

Returns
Type Description
Task
Exceptions
Type Condition
LockException
UnlockException

WithLockAsync(Func<T, Task>, CancellationToken)

Asynchronously locks, performs the action on the captured context or task scheduler (if any) then unlocks. If the action throws an exception, the lock is released automatically.

Declaration
public Task WithLockAsync(Func<T, Task> asyncAction, CancellationToken cancellationToken)
Parameters
Type Name Description
Func<T, Task> asyncAction

The protected object is supplied as the argument of the action

CancellationToken cancellationToken
Returns
Type Description
Task
Exceptions
Type Condition
LockException
UnlockException

WithLockAsync(Func<T, Task>, CancellationToken, Boolean)

Asynchronously locks, performs the action then unlocks. If the action throws an exception, the lock is released automatically.

Declaration
public Task WithLockAsync(Func<T, Task> asyncAction, CancellationToken cancellationToken, bool onCapturedContext)
Parameters
Type Name Description
Func<T, Task> asyncAction

The protected object is supplied as the argument of the action

CancellationToken cancellationToken
System.Boolean onCapturedContext

true to perform the action on the original context or task scheduler if there is a context.

Returns
Type Description
Task
Exceptions
Type Condition
LockException
UnlockException

WithLockAsync(Func<T, Task>, Boolean)

Asynchronously locks, performs the action then unlocks. If the action throws an exception, the lock is released automatically.

Declaration
public Task WithLockAsync(Func<T, Task> asyncAction, bool onCapturedContext)
Parameters
Type Name Description
Func<T, Task> asyncAction

The protected object is supplied as the argument of the action

System.Boolean onCapturedContext

true to perform the action on the original context or task scheduler if there is a context.

Returns
Type Description
Task
Exceptions
Type Condition
LockException
UnlockException

WithLockAsync<TResult>(Func<T, TResult>)

Asynchronously locks, calls the function on the captured context or task scheduler (if any) then unlocks. The returned value from the function is returned. If the function throws an exception, the lock is released automatically.

Declaration
public Task<TResult> WithLockAsync<TResult>(Func<T, TResult> func)
Parameters
Type Name Description
Func<T, TResult> func

The protected object is supplied as the argument of the function. The returned value is returned by this method.

Returns
Type Description
Task<TResult>
Type Parameters
Name Description
TResult
Exceptions
Type Condition
LockException
UnlockException

WithLockAsync<TResult>(Func<T, TResult>, CancellationToken)

Asynchronously locks, calls the function on the captured context or task scheduler (if any) then unlocks. The returned value from the function is returned. If the function throws an exception, the lock is released automatically.

Declaration
public Task<TResult> WithLockAsync<TResult>(Func<T, TResult> func, CancellationToken cancellationToken)
Parameters
Type Name Description
Func<T, TResult> func

The protected object is supplied as the argument of the function. The returned value is returned by this method.

CancellationToken cancellationToken
Returns
Type Description
Task<TResult>
Type Parameters
Name Description
TResult
Exceptions
Type Condition
LockException
UnlockException

WithLockAsync<TResult>(Func<T, TResult>, CancellationToken, Boolean)

Asynchronously locks, synchronously calls 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 Task<TResult> WithLockAsync<TResult>(Func<T, TResult> func, CancellationToken cancellationToken, bool onCapturedContext)
Parameters
Type Name Description
Func<T, TResult> func

The protected object is supplied as the argument of the function. The returned value is returned by this method.

CancellationToken cancellationToken
System.Boolean onCapturedContext

true to call the function on the original context or task scheduler if there is a context.

Returns
Type Description
Task<TResult>
Type Parameters
Name Description
TResult
Exceptions
Type Condition
LockException
UnlockException

WithLockAsync<TResult>(Func<T, TResult>, Boolean)

Asynchronously locks, calls 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 Task<TResult> WithLockAsync<TResult>(Func<T, TResult> func, bool onCapturedContext)
Parameters
Type Name Description
Func<T, TResult> func

The protected object is supplied as the argument of the function. The returned value is returned by this method.

System.Boolean onCapturedContext

true to calls the function on the original context or task scheduler if there is a context.

Returns
Type Description
Task<TResult>
Type Parameters
Name Description
TResult
Exceptions
Type Condition
LockException
UnlockException

WithLockAsync<TResult>(Func<T, Task<TResult>>)

Asynchronously locks, calls the function on the captured context or task scheduler (if any) then unlocks. The returned value from the function is returned. If the function throws an exception, the lock is released automatically.

Declaration
public Task<TResult> WithLockAsync<TResult>(Func<T, Task<TResult>> asyncFunc)
Parameters
Type Name Description
Func<T, Task<TResult>> asyncFunc

The protected object is supplied as the argument of the function. The returned value is returned by this method.

Returns
Type Description
Task<TResult>
Type Parameters
Name Description
TResult
Exceptions
Type Condition
LockException
UnlockException

WithLockAsync<TResult>(Func<T, Task<TResult>>, CancellationToken)

Asynchronously locks, calls the function on the captured context or task scheduler (if any) then unlocks. The returned value from the function is returned. If the function throws an exception, the lock is released automatically.

Declaration
public Task<TResult> WithLockAsync<TResult>(Func<T, Task<TResult>> asyncFunc, CancellationToken cancellationToken)
Parameters
Type Name Description
Func<T, Task<TResult>> asyncFunc

The protected object is supplied as the argument of the function. The returned value is returned by this method.

CancellationToken cancellationToken
Returns
Type Description
Task<TResult>
Type Parameters
Name Description
TResult
Exceptions
Type Condition
LockException
UnlockException

WithLockAsync<TResult>(Func<T, Task<TResult>>, CancellationToken, Boolean)

Asynchronously locks, calls 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 Task<TResult> WithLockAsync<TResult>(Func<T, Task<TResult>> asyncFunc, CancellationToken cancellationToken, bool onCapturedContext)
Parameters
Type Name Description
Func<T, Task<TResult>> asyncFunc

The protected object is supplied as the argument of the function. The returned value is returned by this method.

CancellationToken cancellationToken
System.Boolean onCapturedContext

true to call the function on the original context or task scheduler if there is a context.

Returns
Type Description
Task<TResult>
Type Parameters
Name Description
TResult
Exceptions
Type Condition
LockException
UnlockException

WithLockAsync<TResult>(Func<T, Task<TResult>>, Boolean)

Asynchronously locks, calls 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 Task<TResult> WithLockAsync<TResult>(Func<T, Task<TResult>> asyncFunc, bool onCapturedContext)
Parameters
Type Name Description
Func<T, Task<TResult>> asyncFunc

The protected object is supplied as the argument of the function. The returned value is returned by this method.

System.Boolean onCapturedContext

true to call the function on the original context or task scheduler if there is a context.

Returns
Type Description
Task<TResult>
Type Parameters
Name Description
TResult
Exceptions
Type Condition
LockException
UnlockException

Explicit Interface Implementations

IBareAsyncLock.BarelyLockAsync()

Declaration
Task<object> IBareAsyncLock.BarelyLockAsync()
Returns
Type Description
Task<System.Object>

IBareAsyncLock.BarelyLockAsync(CancellationToken)

Declaration
Task<object> IBareAsyncLock.BarelyLockAsync(CancellationToken cancellationToken)
Parameters
Type Name Description
CancellationToken cancellationToken
Returns
Type Description
Task<System.Object>

IBareAsyncLock.BarelyTryLock(out Nullable<Object>)

Tries to acquire the lock. It returns true and the protected non-null object if the lock is acquired.

Declaration
bool IBareAsyncLock.BarelyTryLock(out object? value)
Parameters
Type Name Description
System.Nullable<System.Object> value

The protected non-null object if the lock is acquired, otherwise, null is returned.

Returns
Type Description
System.Boolean

true if the lock is acquired.

Exceptions
Type Condition
LockException

IBareLock.BarelyLock()

Declaration
object IBareLock.BarelyLock()
Returns
Type Description
System.Object

IBareLock.BarelyTryLock(Int32, out Nullable<Object>)

Tries to acquire the lock. It returns true and the protected non-null object if the lock is acquired.

Declaration
bool IBareLock.BarelyTryLock(int millisecondsTimeout, out object? 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.

System.Nullable<System.Object> value

The protected non-null object if the lock is acquired, otherwise, null is returned.

Returns
Type Description
System.Boolean

true if the lock is acquired.

Exceptions
Type Condition
LockException

IBareLock.BarelyTryLock(out Nullable<Object>)

Tries to acquire the lock. It returns true and the protected non-null object if the lock is acquired.

Declaration
bool IBareLock.BarelyTryLock(out object? value)
Parameters
Type Name Description
System.Nullable<System.Object> value

The protected non-null object if the lock is acquired, otherwise, null is returned.

Returns
Type Description
System.Boolean

true if the lock is acquired.

Exceptions
Type Condition
LockException

IBareLock.BarelyTryLock(TimeSpan, out Nullable<Object>)

Tries to acquire the lock. It returns true and the protected non-null object if the lock is acquired.

Declaration
bool IBareLock.BarelyTryLock(TimeSpan timeout, out object? 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.

System.Nullable<System.Object> value

The protected non-null object if the lock is acquired, otherwise, null is returned.

Returns
Type Description
System.Boolean

true if the lock is acquired.

Exceptions
Type Condition
LockException

Implements

ISynchronized<T>
IAsyncSynchronized<T>
IBareLock<T>
IBareLock
IBareAsyncLock<T>
IBareAsyncLock
In This Article
Back to top Generated by DocFX