10.20PLC+相机2.3视觉修改
This commit is contained in:
		
							
								
								
									
										124
									
								
								Check.Main/Common/ConfigurationManager.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										124
									
								
								Check.Main/Common/ConfigurationManager.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,124 @@ | ||||
| using Check.Main.Camera; | ||||
| using Check.Main.Dispatch; | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using System.Threading.Tasks; | ||||
| using System.Xml.Serialization; | ||||
|  | ||||
| namespace Check.Main.Common | ||||
| { | ||||
|     /// <summary> | ||||
|     /// 静态全局配置管理器,作为配置数据的“单一数据源”。 | ||||
|     /// 负责加载、保存和通知配置变更。 | ||||
|     /// </summary> | ||||
|     public static class ConfigurationManager | ||||
|     { | ||||
|         //    private static readonly string _configFilePath = Path.Combine(Application.StartupPath, "main_config.xml"); | ||||
|         //    private static ProcessConfig _currentConfig; | ||||
|         //    private static readonly object _lock = new object(); | ||||
|  | ||||
|         //    /// <summary> | ||||
|         //    /// 当配置通过 SaveChanges() 方法保存后触发。 | ||||
|         //    /// 其他模块(如 FormControlPanel)可以订阅此事件以响应配置变更。 | ||||
|         //    /// </summary> | ||||
|         //    public static event Action OnConfigurationChanged; | ||||
|  | ||||
|         //    /// <summary> | ||||
|         //    /// 静态构造函数在类首次被访问时自动执行,确保配置只被加载一次。 | ||||
|         //    /// </summary> | ||||
|         //    static ConfigurationManager() | ||||
|         //    { | ||||
|         //        Load(); | ||||
|         //    } | ||||
|  | ||||
|         //    /// <summary> | ||||
|         //    /// 获取对当前配置对象的直接引用。 | ||||
|         //    /// PropertyGrid 可以直接绑定到这个对象进行编辑。 | ||||
|         //    /// </summary> | ||||
|         //    /// <returns>当前的 ProcessConfig 实例。</returns> | ||||
|         //    public static ProcessConfig GetCurrentConfig() | ||||
|         //    { | ||||
|         //        return _currentConfig; | ||||
|         //    } | ||||
|  | ||||
|         //    /// <summary> | ||||
|         //    /// 从 XML 文件加载配置。如果文件不存在或加载失败,则创建一个新的默认配置。 | ||||
|         //    /// </summary> | ||||
|         //    private static void Load() | ||||
|         //    { | ||||
|         //        lock (_lock) | ||||
|         //        { | ||||
|         //            if (File.Exists(_configFilePath)) | ||||
|         //            { | ||||
|         //                try | ||||
|         //                { | ||||
|         //                    XmlSerializer serializer = new XmlSerializer(typeof(ProcessConfig)); | ||||
|         //                    using (var fs = new FileStream(_configFilePath, FileMode.Open, FileAccess.Read)) | ||||
|         //                    { | ||||
|         //                        _currentConfig = (ProcessConfig)serializer.Deserialize(fs); | ||||
|         //                        ThreadSafeLogger.Log("主配置文件加载成功。"); | ||||
|         //                    } | ||||
|         //                } | ||||
|         //                catch (Exception ex) | ||||
|         //                { | ||||
|         //                    ThreadSafeLogger.Log("加载主配置失败: " + ex.Message + " 将使用默认配置。"); | ||||
|         //                    _currentConfig = new ProcessConfig(); | ||||
|         //                } | ||||
|         //            } | ||||
|         //            else | ||||
|         //            { | ||||
|         //                ThreadSafeLogger.Log("未找到主配置文件,将创建新的默认配置。"); | ||||
|         //                _currentConfig = new ProcessConfig(); | ||||
|         //            } | ||||
|         //        } | ||||
|         //    } | ||||
|  | ||||
|         //    /// <summary> | ||||
|         //    /// 将当前配置保存到文件,并通知所有监听者配置已更改。 | ||||
|         //    /// 这是响应UI变化的推荐方法。 | ||||
|         //    /// </summary> | ||||
|         //    public static void SaveChanges() | ||||
|         //    { | ||||
|         //        lock (_lock) | ||||
|         //        { | ||||
|         //            try | ||||
|         //            { | ||||
|         //                XmlSerializer serializer = new XmlSerializer(typeof(ProcessConfig)); | ||||
|         //                using (var fs = new FileStream(_configFilePath, FileMode.Create, FileAccess.Write)) | ||||
|         //                { | ||||
|         //                    serializer.Serialize(fs, _currentConfig); | ||||
|         //                } | ||||
|         //            } | ||||
|         //            catch (Exception ex) | ||||
|         //            { | ||||
|         //                ThreadSafeLogger.Log("保存主配置失败: " + ex.Message); | ||||
|         //            } | ||||
|         //        } | ||||
|  | ||||
|         //        // 在锁之外触发事件,以避免监听者中的代码导致死锁 | ||||
|         //        ThreadSafeLogger.Log("配置已保存,正在触发 OnConfigurationChanged 事件..."); | ||||
|         //        OnConfigurationChanged?.Invoke(); | ||||
|         //    } | ||||
|         // 不再自己管理配置,而是直接从 ProductManager 获取 | ||||
|         public static ProcessConfig GetCurrentConfig() | ||||
|         { | ||||
|             return ProductManager.CurrentConfig; | ||||
|         } | ||||
|  | ||||
|         public static void SaveChanges() | ||||
|         { | ||||
|             ProductManager.SaveCurrentProductConfig(); | ||||
|         } | ||||
|  | ||||
|         // OnConfigurationChanged 事件现在由 ProductManager.OnProductChanged 替代 | ||||
|         // 如果其他地方还依赖这个事件,可以做一个桥接: | ||||
|         public static event Action OnConfigurationChanged | ||||
|         { | ||||
|             add { ProductManager.OnProductChanged += value; } | ||||
|             remove { ProductManager.OnProductChanged -= value; } | ||||
|         } | ||||
|     } | ||||
|  | ||||
| } | ||||
		Reference in New Issue
	
	Block a user