59 lines
1.8 KiB
C#
59 lines
1.8 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
namespace VisionCommon {
|
|
public static class CamPatternAgentManager {
|
|
private static object _lock = new object();
|
|
public static Dictionary<eCamId, PatternAgentBase> _PatternAgents = new Dictionary<eCamId, PatternAgentBase>();
|
|
|
|
public static void SetAgent(eCamId camId, PatternAgentBase patternAgent) {
|
|
lock (_lock) {
|
|
if (!_PatternAgents.ContainsKey(camId)) {
|
|
_PatternAgents.Add(camId, patternAgent);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static PatternAgentBase GetAgent(eCamId camId) {
|
|
lock (_lock) {
|
|
if (VisionSettingManager.VisionSetting.UseCamPattern) {
|
|
if (_PatternAgents.ContainsKey(camId)) {
|
|
return _PatternAgents[camId];
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public static void DeleteUnusedAgent(List<eCamId> newCamIds) {
|
|
lock (_lock) {
|
|
if (_PatternAgents.Count > newCamIds.Count) {
|
|
foreach (eCamId oldCamId in _PatternAgents.Keys.ToList()) {
|
|
if (!newCamIds.Contains(oldCamId)) {
|
|
_PatternAgents[oldCamId].Dispose();
|
|
_PatternAgents.Remove(oldCamId);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public static bool IsNewCamId(eCamId camId) {
|
|
lock (_lock) {
|
|
if (!_PatternAgents.ContainsKey(camId)) {
|
|
return true;
|
|
}
|
|
else {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void Clear() {
|
|
lock (_lock) {
|
|
_PatternAgents.Clear();
|
|
}
|
|
}
|
|
}
|
|
}
|