2026-06-05 13:44:39 +09:00

63 lines
2.0 KiB
C#

using System.Collections.Generic;
using System.Linq;
namespace VisionCommon {
public static class FovPatternAgentManager {
private static object _lock = new object();
public static Dictionary<SubSysInfo, PatternAgentBase> _PatternAgents = new Dictionary<SubSysInfo, PatternAgentBase>();
public static void SetAgent(SubSysInfo subSysInfo, PatternAgentBase patternAgent) {
lock (_lock) {
if (!_PatternAgents.ContainsKey(subSysInfo)) {
_PatternAgents.Add(subSysInfo, patternAgent);
}
}
}
public static PatternAgentBase GetAgent(SubSysInfo subSysInfo) {
lock (_lock) {
if (_PatternAgents.ContainsKey(subSysInfo)) {
return _PatternAgents[subSysInfo];
}
}
return null;
}
public static Dictionary<SubSysInfo, PatternAgentBase> GetAgents() {
lock (_lock) {
return _PatternAgents;
}
}
public static void DeleteUnusedAgent(List<SubSysInfo> newSubSysInfos) {
lock (_lock) {
foreach (SubSysInfo oldSubSysInfo in _PatternAgents.Keys.ToList()) {
if (!newSubSysInfos.Contains(oldSubSysInfo)) {
if (_PatternAgents.ContainsKey(oldSubSysInfo)) {
_PatternAgents[oldSubSysInfo].Dispose();
_PatternAgents.Remove(oldSubSysInfo);
}
}
}
}
}
public static bool IsNewSubSysInfo(SubSysInfo subSysInfo) {
lock (_lock) {
if (!_PatternAgents.ContainsKey(subSysInfo)) {
return true;
}
else {
return false;
}
}
}
public static void Clear() {
lock (_lock) {
_PatternAgents.Clear();
}
}
}
}