2026-01-01 22:40:32 +08:00
|
|
|
|
using System.Collections.ObjectModel;
|
2025-12-30 10:53:02 +08:00
|
|
|
|
using System.Windows;
|
|
|
|
|
|
|
|
|
|
|
|
namespace SHH.CameraDashboard
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Interaction logic for App.xaml
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public partial class App : Application
|
|
|
|
|
|
{
|
2026-01-01 22:40:32 +08:00
|
|
|
|
protected override async void OnStartup(StartupEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
base.OnStartup(e);
|
|
|
|
|
|
|
|
|
|
|
|
// 1. 【核心代码】程序启动时,异步读取配置文件
|
|
|
|
|
|
var savedNodes = await LocalStorageService.LoadAsync<ObservableCollection<ServiceNodeModel>>(AppPaths.ServiceNodesConfig);
|
|
|
|
|
|
if (savedNodes != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (var node in savedNodes)
|
|
|
|
|
|
AppGlobal.ServiceNodes.Add(node);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 3. 启动主窗口
|
|
|
|
|
|
// 注意:如果 LoadAsync 耗时较长,这里可能会导致启动画面停留,
|
|
|
|
|
|
// 实际项目中可以搞一个 Splash Screen (启动屏) 来做这件事。
|
|
|
|
|
|
var mainWin = new MainWindow();
|
|
|
|
|
|
mainWin.Show();
|
|
|
|
|
|
}
|
2025-12-30 10:53:02 +08:00
|
|
|
|
|
2026-01-01 22:40:32 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 全局统一退出入口
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public static void ShutdownApp()
|
|
|
|
|
|
{
|
|
|
|
|
|
// 1. 这里可以处理统一的资源清理逻辑 (如停止摄像头推流、关闭数据库连接)
|
|
|
|
|
|
// 2. 保存用户配置
|
|
|
|
|
|
// 3. 彻底退出
|
|
|
|
|
|
Current.Shutdown();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|