using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace Ink_Canvas.Helpers { /// /// 上传队列帮助类,提供统一的队列管理功能 /// public static class UploadQueueHelper { private static readonly List _queues = new List(); private static readonly object _syncLock = new object(); private static volatile bool _initialized = false; /// /// 初始化所有上传队列 /// public static void InitializeAllQueues() { lock (_syncLock) { if (_initialized) return; // 初始化所有注册的队列 foreach (var queue in _queues) { try { queue.InitializeQueue(); } catch (Exception ex) { LogHelper.WriteLogToFile($"[UploadQueueHelper] 初始化队列时出错: {ex.Message}", LogHelper.LogType.Error); } } _initialized = true; } } /// /// 注册上传队列 /// /// 上传队列实例 public static void RegisterQueue(BaseUploadQueue queue) { if (queue == null) return; lock (_syncLock) { if (!_queues.Contains(queue)) { try { // 先初始化队列,再添加到列表 queue.InitializeQueue(); _queues.Add(queue); } catch (Exception ex) { LogHelper.WriteLogToFile($"[UploadQueueHelper] 注册队列时出错: {ex.Message}", LogHelper.LogType.Error); } } } } /// /// 获取所有注册的上传队列 /// /// 上传队列列表 public static IReadOnlyList GetAllQueues() { lock (_syncLock) { return new List(_queues).AsReadOnly(); } } /// /// 确保所有队列都已初始化 /// public static void EnsureQueuesInitialized() { if (!_initialized) { InitializeAllQueues(); } } } }