/*
* Copyright (c) 2025 LG Electronics Inc.
* SPDX-License-Identifier: LicenseRef-LGE-Proprietary
*/
using System;
using System.Collections.Generic;
namespace VisionCommon {
///
/// Disposable 그룹 키
///
public enum eDpsGroupKey {
SubMenu_Align,
SubMenu_AutoFocus,
SubMenu_Calibration,
SubMenu_CenterTuning,
SubMenu_VisionRepeat,
SubMenu_AttachInsp,
}
///
/// Disposalbe을 그룹 키로 묶어서 등록하고, 향후 그룹 키에 해당하는 Disposalbe을 한 번에 Dispose하기 위한 매니저
///
public class DisposableManager {
private static Dictionary> _Disposables = new Dictionary>();
///
/// 특정 그룹 키에 해당하는 Disposalbe 객체 추가
///
/// Disposalbe 그룹 키
/// Disposalbe 객체
public static void AddDisposable(eDpsGroupKey dpsGroupKey, IDisposable disposable) {
if (!_Disposables.ContainsKey(dpsGroupKey)) {
_Disposables.Add(dpsGroupKey, new List());
}
_Disposables[dpsGroupKey].Add(disposable);
}
///
/// 특정 그룹 키에 해당하는 Disposalbe 객체 모두 클리어
///
/// Disposalbe 그룹 키
public static void ClearDisposable(eDpsGroupKey dpsGroupKey) {
if (_Disposables.ContainsKey(dpsGroupKey)) {
foreach (IDisposable disposable in _Disposables[dpsGroupKey]) {
disposable?.Dispose();
}
}
}
}
}