using Microsoft.Extensions.Logging; namespace Seyounth.Auto.Hs.Runtime.Scanner; public class ScannerService : IScannerService { public ScannerService(ILogger logger,IEnumerable scanners) { _logger = logger; _scanners.AddRange(scanners); //todo:向_scanners里添加HikScanner } public IReadOnlyList Scanners => _scanners; private readonly ILogger _logger; private readonly List _scanners = new List(); public async Task StartAsync() { await Task.WhenAll(_scanners.Select(x => x.ConnectAsync() .ContinueWith(t => { if (t.IsCompletedSuccessfully) _logger.LogInformation($"Scanner {x.Id} connected successfully."); else _logger.LogError($"Scanner {x.Id} failed to connect, error: {t.Exception?.Message}"); }))); } public async Task StopAsync() { await Task.WhenAll(_scanners.Select(x => x.DisconnectAsync() .ContinueWith(t => { if (t.IsCompletedSuccessfully) _logger.LogInformation($"Scanner {x.Id} disconnected."); else _logger.LogError($"Scanner {x.Id} failed to disconnect, error: {t.Exception?.Message}"); }))); } public event Action? OnScanned; }