/* * 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(); } } } } }