using System.Threading.Channels; namespace BMA.EHR.Recruit.Services; public class ImportJobQueue { private readonly Channel _channel = Channel.CreateBounded(new BoundedChannelOptions(100) { FullMode = BoundedChannelFullMode.Wait, SingleReader = true }); public async ValueTask EnqueueAsync(ImportJobInfo job, CancellationToken cancellationToken = default) { await _channel.Writer.WriteAsync(job, cancellationToken); } public async ValueTask DequeueAsync(CancellationToken cancellationToken) { return await _channel.Reader.ReadAsync(cancellationToken); } }