using Microsoft.AspNetCore.Razor.Language.Intermediate; using System.Threading.Channels; namespace ManagementApp.AServices.ThreadManage { public class ConcurrentQueueThread: IConcurrentTasks { private readonly Channel> queue; public ConcurrentQueueThread(int capacity) { var options = new BoundedChannelOptions(capacity) { FullMode = BoundedChannelFullMode.Wait }; queue = Channel.CreateBounded>(options); } public async ValueTask Add(Func value) { await queue.Writer.WriteAsync(value); } public async ValueTask> Last(CancellationToken cancellationToken) { throw new NotImplementedException(); } public async ValueTask> First(CancellationToken cancellationToken) { return await queue.Reader.ReadAsync(cancellationToken); } } }