using System.Threading.Channels; namespace Elsa.Workflows.Runtime; public class BookmarkQueueSignaler : IBookmarkQueueSignaler { private readonly Channel _channel; public BookmarkQueueSignaler() { var options = new BoundedChannelOptions(1) { SingleReader = true, SingleWriter = false, AllowSynchronousContinuations = false }; _channel = Channel.CreateBounded(options); } public Task AwaitAsync(CancellationToken cancellationToken) { return _channel.Reader.ReadAsync(cancellationToken).AsTask(); } public Task TriggerAsync(CancellationToken cancellationToken) { _channel.Writer.TryWrite(null); return Task.CompletedTask; } }