Skip to content

结构化升级:解耦硬件逻辑与 UI 层,为后续主界面重构做准备 #77

Description

@shihuaidexianyu

背景

当前项目主要由 WinForms 托盘菜单驱动功能。硬件控制、配置读写、预设应用、监控进程管理和 UI 状态更新存在较强耦合,尤其集中在 Program.csProgram.Menu.csProgram.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
    • 封装键盘灯、灯条、每键 RGB 等灯光逻辑。
  • AppSettingsService
    • 封装注册表配置读写,减少 UI 层直接操作注册表。

重点解耦点

  • 拆分 ApplyPresetSettings()
    • 服务层负责应用配置和硬件动作。
    • UI 层只负责菜单勾选、提示框、用户确认和界面刷新。
  • 拆分硬件监控逻辑:
    • 把监控子进程生命周期从 UI 主流程中独立出来。
  • 清理 GPU/NVIDIA 逻辑中的 UI 弹窗依赖:
    • 硬件层返回结果,UI 层决定如何展示错误或确认。
  • 保留现有静态入口兼容旧代码,逐步迁移调用点。

验收标准

  • 项目可以正常编译运行。
  • 现有功能行为保持不变。
  • 托盘菜单、预设切换、风扇控制、硬件监控、NVIDIA 控制、灯光控制仍可按原路径使用。
  • 至少完成一批核心服务抽离,并让现有 UI 通过服务层调用。
  • 新服务层不依赖 ToolStripMenuItemContextMenuStripMessageBox 等 WinForms UI 类型。
  • 后续新的主 UI 可以复用这些服务,而不需要直接调用旧菜单代码。

备注

这一步是未来主界面重构的前置工作。无论后续继续优化 WinForms,还是迁移到 WPF、WinUI 3、Avalonia 等技术,都需要先把现有硬件能力沉淀为清晰边界,避免 UI 层直接绑定底层硬件实现。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions