背景
当前项目主要由 WinForms 托盘菜单驱动功能。硬件控制、配置读写、预设应用、监控进程管理和 UI 状态更新存在较强耦合,尤其集中在 Program.cs、Program.Menu.cs、Program.Config.cs 等文件中。
后续可能会重构主 UI,但技术路线暂不限定,可能继续优化 WinForms,也可能迁移到 WPF、WinUI 3、Avalonia 或其他桌面 UI 技术。为了避免 UI 重构时同时处理大量硬件逻辑,需要先进行一次结构化升级:保持现有功能和用户体验不变,但把硬件逻辑与 UI 层逐步解耦。
目标
- 保持现有托盘菜单、浮窗、风扇曲线编辑器、帮助窗口等功能行为不变。
- 将硬件操作、监控、配置、预设等逻辑从 UI 事件处理中抽离。
- 形成可被未来任意 UI 技术复用的服务层。
- 降低
Program.Menu.cs / Program.Config.cs 对硬件细节和全局状态的直接依赖。
- 为后续主界面重构降低风险。
非目标
- 本 issue 不决定未来主 UI 技术栈。
- 本 issue 不引入新的 UI 框架。
- 本 issue 不重做视觉设计。
- 本 issue 不改变现有配置格式、用户操作路径或硬件行为。
- 本 issue 不一次性重写所有硬件逻辑,只做渐进式解耦。
初步方案
新增或整理一组 UI 无关的服务/模块:
HardwareControlService
- 封装 HP BIOS/WMI 命令、风扇、传感器、性能模式、CPU/GPU 功耗控制等。
HardwareMonitorService
- 封装
--hwmonitor 子进程、CPU/GPU 温度功耗读取、监控启停和刷新频率。
PresetService
GpuService
- 封装 NVIDIA / NvAPI / nvidia-smi / DB 驱动相关逻辑。
LightingService
AppSettingsService
- 封装注册表配置读写,减少 UI 层直接操作注册表。
重点解耦点
- 拆分
ApplyPresetSettings():
- 服务层负责应用配置和硬件动作。
- UI 层只负责菜单勾选、提示框、用户确认和界面刷新。
- 拆分硬件监控逻辑:
- 清理 GPU/NVIDIA 逻辑中的 UI 弹窗依赖:
- 保留现有静态入口兼容旧代码,逐步迁移调用点。
验收标准
- 项目可以正常编译运行。
- 现有功能行为保持不变。
- 托盘菜单、预设切换、风扇控制、硬件监控、NVIDIA 控制、灯光控制仍可按原路径使用。
- 至少完成一批核心服务抽离,并让现有 UI 通过服务层调用。
- 新服务层不依赖
ToolStripMenuItem、ContextMenuStrip、MessageBox 等 WinForms UI 类型。
- 后续新的主 UI 可以复用这些服务,而不需要直接调用旧菜单代码。
备注
这一步是未来主界面重构的前置工作。无论后续继续优化 WinForms,还是迁移到 WPF、WinUI 3、Avalonia 等技术,都需要先把现有硬件能力沉淀为清晰边界,避免 UI 层直接绑定底层硬件实现。
背景
当前项目主要由 WinForms 托盘菜单驱动功能。硬件控制、配置读写、预设应用、监控进程管理和 UI 状态更新存在较强耦合,尤其集中在
Program.cs、Program.Menu.cs、Program.Config.cs等文件中。后续可能会重构主 UI,但技术路线暂不限定,可能继续优化 WinForms,也可能迁移到 WPF、WinUI 3、Avalonia 或其他桌面 UI 技术。为了避免 UI 重构时同时处理大量硬件逻辑,需要先进行一次结构化升级:保持现有功能和用户体验不变,但把硬件逻辑与 UI 层逐步解耦。
目标
Program.Menu.cs/Program.Config.cs对硬件细节和全局状态的直接依赖。非目标
初步方案
新增或整理一组 UI 无关的服务/模块:
HardwareControlServiceHardwareMonitorService--hwmonitor子进程、CPU/GPU 温度功耗读取、监控启停和刷新频率。PresetServiceGpuServiceLightingServiceAppSettingsService重点解耦点
ApplyPresetSettings():验收标准
ToolStripMenuItem、ContextMenuStrip、MessageBox等 WinForms UI 类型。备注
这一步是未来主界面重构的前置工作。无论后续继续优化 WinForms,还是迁移到 WPF、WinUI 3、Avalonia 等技术,都需要先把现有硬件能力沉淀为清晰边界,避免 UI 层直接绑定底层硬件实现。