using System.Collections.Concurrent; namespace LMEMappeCatastaliApp.Services; public sealed class IncomingFileService { private readonly ConcurrentQueue _files = new(); public static IncomingFileService Shared { get; } = new(); public event Action? FileAvailable; public void Enqueue(IncomingFile file) { _files.Enqueue(file); MainThread.BeginInvokeOnMainThread(() => FileAvailable?.Invoke()); } public bool TryDequeue(out IncomingFile? file) => _files.TryDequeue(out file); } public sealed record IncomingFile(string Path, string FileName, string? ContentType);