// File: Services/Scanners/ScanQueue.cs using System.Diagnostics; namespace WebmrAPI.Services.Scanners { public class ScanQueue : IScannable { private ScanTarget _target = 0; public ScanTarget Target { get => _target; } private Queue _queue = new(); public ScanQueue Add(IScannable item) { _queue.Enqueue(item); _target |= item.Target; return this; } public async Task ScanAsync() { var tasks = new List(); while (_queue.Count > 0) { tasks.Add(_queue.Dequeue().ScanAsync()); } await Task.WhenAll(tasks.ToArray()); } } }