using System.Collections.Concurrent; namespace SmartWells { /// /// 计算任务管理器 /// public static class CalculationTaskManager { private static readonly ConcurrentDictionary _tasks = new ConcurrentDictionary(); /// /// 添加计算任务 /// /// 任务ID /// 计算实例 public static void AddTask(string taskId, CaculateHelpWeb calculator) { _tasks.TryAdd(taskId, calculator); } /// /// 获取计算任务 /// /// 任务ID /// 计算实例 public static CaculateHelpWeb GetTask(string taskId) { _tasks.TryGetValue(taskId, out var calculator); return calculator; } /// /// 移除计算任务 /// /// 任务ID public static void RemoveTask(string taskId) { _tasks.TryRemove(taskId, out _); } /// /// 清理完成或过期的任务 /// public static void CleanupTasks() { foreach (var task in _tasks) { if (task.Value.Status == CaculateStatus.Stopped || task.Value.IsStop) { _tasks.TryRemove(task.Key, out _); } } } } }