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 _);
}
}
}
}
}