c#
public class IcsBackgroundQueue
{
private ConcurrentQueue<IcsCashDesk> _jobQueue = new();
private OrdersDB _ordersDb = new(Types.Order.sell);
private Task _processingTask;
private CancellationTokenSource _cts = new();
public IcsBackgroundWorker()
{
_processingTask = Task.Run(ProcessJobs, _cts.Token);
}
// ... stop function, enqueue function etc
private async Task ProcessJobs()
{
while (!_cts.IsCancellationRequested)
{
try
{
if (_jobQueue.IsEmpty)
{
await Task.Delay(1000, _cts.Token);
continue;
}
_jobQueue.TryDequeue(out var cashDesk);
if (cashDesk == null) continue;
await cashDesk.CompleteWaitAsync();
}
catch (OperationCanceledException)
{
}
}
}
}
c#
public class IcsBackgroundQueue
{
private ConcurrentQueue<IcsCashDesk> _jobQueue = new();
private OrdersDB _ordersDb = new(Types.Order.sell);
private Task _processingTask;
private CancellationTokenSource _cts = new();
public IcsBackgroundWorker()
{
_processingTask = Task.Run(ProcessJobs, _cts.Token);
}
// ... stop function, enqueue function etc
private async Task ProcessJobs()
{
while (!_cts.IsCancellationRequested)
{
try
{
if (_jobQueue.IsEmpty)
{
await Task.Delay(1000, _cts.Token);
continue;
}
_jobQueue.TryDequeue(out var cashDesk);
if (cashDesk == null) continue;
await cashDesk.CompleteWaitAsync();
}
catch (OperationCanceledException)
{
}
}
}
}