DotNext.Threading by .NET Foundation and Contributors

<PackageReference Include="DotNext.Threading" Version="4.12.3" />

 AsyncTrigger<TState>

public class AsyncTrigger<TState> : QueuedSynchronizer
Represents asynchronous trigger that allows to resume and suspend concurrent flows.
public interface ITransition<TState>

Represents state transition.

public TState State { get; }

Gets state of this trigger.

public AsyncTrigger(TState state)

Initializes a new trigger.

public AsyncTrigger(TState state, int concurrencyLevel)

Initializes a new trigger.

public void Signal()

Performs unconditional transition.

public void Signal(Action<TState> transition)

Performs unconditional transition.

public void Signal<T>(Action<TState, T> transition, T arg)

Performs unconditional transition.

public bool TrySignal(ITransition<TState> transition)

public ValueTask<bool> WaitAsync(ITransition<TState> transition, TimeSpan timeout, CancellationToken token = default)

public ValueTask WaitAsync(ITransition<TState> transition, CancellationToken token = default)