Class TryLockTryDo
Execute something if a condition is met, but do it within a lock to avoid duplicate runs
[InternalApi_DoNotUse_MayChangeWithoutNotice]
public class TryLockTryDo
- Inheritance
-
objectTryLockTryDo
Constructors
TryLockTryDo(object?)
Execute something if a condition is met, but do it within a lock to avoid duplicate runs
public TryLockTryDo(object? lockObject = null)
Parameters
lockObject
object
Fields
LockCount
public int LockCount
Field Value
PreLockCount
public int PreLockCount
Field Value
Methods
Call<TResult>(Func<bool>, Func<TResult>, Func<TResult>)
Get / Generate a value inside a lock with double-check.
public (TResult Result, bool Generated, string Message) Call<TResult>(Func<bool> conditionToGenerate, Func<TResult> generator, Func<TResult> cacheOrFallback)
Parameters
conditionToGenerate
Func<bool>Function to call checking if we need to generate the result
generator
Func<TResult>the generator
cacheOrFallback
Func<TResult>fallback to provide if no loading should happen - typically a previously cached result or default data
Returns
Type Parameters
TResult
Do(Func<bool>, Action)
public void Do(Func<bool> condition, Action action)