Files
DMS/DMS.WPF/ViewModels/SplashViewModel.cs

91 lines
3.1 KiB
C#
Raw Normal View History

2025-07-26 11:20:03 +08:00
// 文件: DMS.WPF/ViewModels/SplashViewModel.cs
2025-07-26 11:20:03 +08:00
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using DMS.Application.Interfaces;
using DMS.WPF.Services;
using System;
using System.Threading.Tasks;
using DMS.Application.Services;
2025-09-04 14:46:50 +08:00
using DMS.WPF.Helper;
2025-07-26 12:19:05 +08:00
using DMS.WPF.Views;
using Microsoft.Extensions.DependencyInjection;
2025-09-04 14:46:50 +08:00
using Microsoft.Extensions.Logging;
2025-07-26 11:20:03 +08:00
namespace DMS.WPF.ViewModels;
/// <summary>
/// 启动加载窗口的ViewModel。
/// </summary>
public partial class SplashViewModel : ObservableObject
{
private readonly ILogger<SplashViewModel> _logger;
2025-07-26 11:20:03 +08:00
private readonly IServiceProvider _serviceProvider;
private readonly IInitializeService _initializeService;
2025-09-02 20:28:29 +08:00
private readonly IDataCenterService _dataCenterService;
2025-07-26 13:35:53 +08:00
private readonly DataServices _dataServices;
2025-07-26 11:20:03 +08:00
[ObservableProperty]
private string _loadingMessage = "正在加载...";
public SplashViewModel(ILogger<SplashViewModel> logger,IServiceProvider serviceProvider, IInitializeService initializeService,
IDataCenterService dataCenterService, DataServices dataServices)
2025-07-26 11:20:03 +08:00
{
2025-09-04 14:46:50 +08:00
_logger = logger;
2025-07-26 11:20:03 +08:00
_serviceProvider = serviceProvider;
_initializeService = initializeService;
2025-09-02 20:28:29 +08:00
this._dataCenterService = dataCenterService;
2025-07-26 13:35:53 +08:00
_dataServices = dataServices;
2025-07-26 11:20:03 +08:00
}
/// <summary>
/// 开始执行初始化任务。
/// </summary>
2025-07-26 11:51:09 +08:00
public async Task<bool> InitializeAsync()
2025-07-26 11:20:03 +08:00
{
try
{
2025-09-04 14:46:50 +08:00
_logger.LogInformation("正在初始化数据库...");
2025-07-26 11:20:03 +08:00
LoadingMessage = "正在初始化数据库...";
_initializeService.InitializeTables();
_initializeService.InitializeMenus();
await _dataCenterService.LoadAllDataToMemoryAsync();
2025-07-26 11:20:03 +08:00
LoadingMessage = "正在加载系统配置...";
await _dataServices.LoadAllDatas();
// await _dataServices.LoadVariableTables();
// await _dataServices.LoadVariables();
// await _dataServices.LoadMenus();
2025-09-02 20:28:29 +08:00
// _dataServices.AssociateVariableTablesToDevices();
// _dataServices.AssociateVariablesToVariableTables();
2025-07-26 11:20:03 +08:00
// 可以在这里添加加载配置的逻辑
2025-07-26 12:19:05 +08:00
await Task.Delay(500); // 模拟耗时
2025-07-26 11:20:03 +08:00
LoadingMessage = "正在连接后台服务...";
// 可以在这里添加连接服务的逻辑
2025-07-26 12:19:05 +08:00
await Task.Delay(500); // 模拟耗时
2025-07-26 11:20:03 +08:00
LoadingMessage = "加载完成,正在启动主界面...";
2025-07-26 12:19:05 +08:00
await Task.Delay(500);
2025-07-26 11:20:03 +08:00
// 初始化完成,显示主窗口
2025-07-26 12:19:05 +08:00
var mainView = App.Current.Services.GetRequiredService<MainView>();
// 将 MainView 设置为新的主窗口
App.Current.MainWindow = mainView;
mainView.Show();
2025-07-26 11:51:09 +08:00
return true;
2025-07-26 11:20:03 +08:00
}
catch (Exception ex)
{
// 处理初始化过程中的异常
LoadingMessage = $"初始化失败: {ex.Message}";
2025-07-26 14:12:14 +08:00
Console.WriteLine($"初始化失败: {ex}");
2025-07-26 11:20:03 +08:00
// 在此可以记录日志或显示错误对话框
2025-07-26 11:51:09 +08:00
return false;
2025-07-26 11:20:03 +08:00
}
}
}