using Example; using FreeSql; using OrpaonEMS.App.Services; using OrpaonEMS.App.ViewModels; using OrpaonEMS.App.Views; using OrpaonEMS.Core; using OrpaonEMS.Model; using Prism.DryIoc; using Prism.Ioc; using Prism.Regions; using Prism.Services.Dialogs; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.Threading.Tasks; using System.Windows; namespace OrpaonEMS.App { /// /// Interaction logic for App.xaml /// public partial class App : PrismApplication { public App() { try { //24.2.7 //Syncfusion.SfSkinManager.SfSkinManager.ApplyStylesOnApplication = true; Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("MzEyMzM3NkAzMjM0MmUzMDJlMzBHdjVKNUNpNWZxYXQwR05ZbVYvUEtzbGxXMnVxRjYvRGtLSlZUOGpjQW44PQ=="); //e0397905-7455-4533-8c7a-3ec89b68b2a7 // 授权 a717c797-59e3-48de-b6b4-574a4e03dc79 if (!HslCommunication.Authorization.SetAuthorizationCode("e0397905-7455-4533-8c7a-3ec89b68b2a7")) { //active failed MessageBox.Show("授权失败!当前程序只能使用8小时!"); return; } else { //IsActive = true; } //SfSkinManager.ApplyStylesOnApplication = true; } catch (Exception ex) { MessageBox.Show(ex.Message); } } //string DataDirectory = AppDomain.CurrentDomain.BaseDirectory + @"Db\ems.db";//应用程序内部的Db信息 string DataDirectory = @"C:\Db\ems.db";//直接的路径信息 /// /// 注册服务 /// private EnergyStorageService energyStorageService { get; set; } protected override Window CreateShell() => null; protected override void RegisterTypes(IContainerRegistry services) { //注册日志服务 services.RegisterSingleton(); //注册设备服务 services.RegisterSingleton(); services.RegisterSingleton(); services.RegisterSingleton(); services.RegisterSingleton(); services.RegisterSingleton(); services.RegisterSingleton(); services.RegisterSingleton(); services.RegisterSingleton(); services.RegisterSingleton(); services.RegisterSingleton(); services.RegisterSingleton(); services.RegisterSingleton(); services.RegisterSingleton(); services.RegisterSingleton(); var Con = OrpaonEMS.Core.ConfigHelper.GetValue("connecting5").Replace("@Address@", DataDirectory); //var Con = OrpaonEMS.Core.ConfigHelper.GetValue("connecting").Replace("@Address@", DataDirectory); // Data Source=C:\Db\ems.db; Attachs=ems.db; Pooling=true;Min Pool Size=1 //注册IFreeSql实例 单例 services.RegisterSingleton(() => { IFreeSql Fsql = new FreeSqlBuilder() //.UseConnectionString(DataType.SqlServer, "Data Source=CT-PC;user instance=false;Initial Catalog=KylinEMS;Encrypt=True;TrustServerCertificate=True;User ID=sa;Password=12345678") .UseConnectionString(FreeSql.DataType.Sqlite, Con) .UseAutoSyncStructure(true) .Build(); return Fsql; }); services.RegisterSingleton(); services.RegisterForNavigation(); services.RegisterForNavigation(); services.RegisterForNavigation(); services.RegisterForNavigation(); services.RegisterForNavigation(); services.RegisterForNavigation(); services.RegisterForNavigation(); services.RegisterForNavigation(); services.RegisterForNavigation(); services.RegisterForNavigation(); services.RegisterForNavigation(); //services.RegisterForNavigation(); services.RegisterDialog(); services.RegisterDialog(); services.RegisterDialog(); services.RegisterDialog(); } /// /// 系统初始化 /// protected override async void OnInitialized() { //从容器中获取MainView的实例对象 var container = ContainerLocator.Container; var shell = container.Resolve("MainWindow"); if (shell is Window view) { //更新Prism注册区域信息 var regionManager = container.Resolve(); RegionManager.SetRegionManager(view, regionManager); RegionManager.UpdateRegions(); regionManager.RegisterViewWithRegion("UserDefineContentRegion", "YuPuHandView"); //调用首页的INavigationAware 接口做一个初始化操作 if (view.DataContext is INavigationAware navigationAware) { navigationAware.OnNavigatedTo(null); //呈现首页 App.Current.MainWindow = view; } } //var appVersion1 = ContainerLocator.Container.Resolve(); //先加载服务,防止在ViewModel中使用时速度慢 var appVersionService = ContainerLocator.Container.Resolve(); var appVersionService1 = ContainerLocator.Container.Resolve(); var appVersionService2 = ContainerLocator.Container.Resolve(); var appVersionService8 = ContainerLocator.Container.Resolve(); var appVersionService14 = ContainerLocator.Container.Resolve(); var appVersionService3 = ContainerLocator.Container.Resolve(); //var appVersionService4 = ContainerLocator.Container.Resolve(); var appVersionService5 = ContainerLocator.Container.Resolve(); energyStorageService = ContainerLocator.Container.Resolve(); var appVersionService7 = ContainerLocator.Container.Resolve(); var appVersionService9 = ContainerLocator.Container.Resolve(); var appVersionService10 = ContainerLocator.Container.Resolve(); var appVersionService11 = ContainerLocator.Container.Resolve(); var appVersionService12 = ContainerLocator.Container.Resolve(); var appVersionService13 = ContainerLocator.Container.Resolve(); var appVersionService16 = ContainerLocator.Container.Resolve(); var dd = appVersionService.Select().ToList(); await PreloadPDashBoardViews(); await PreloadBmsViews(); //await PreloadPcsViews(); //var dd = appVersionService.Select().ToList(); base.OnInitialized(); } protected override void OnExit(ExitEventArgs e) { ContainerLocator.Container.Resolve().ThreadEnable = false; ContainerLocator.Container.Resolve().WebSocketThreadEnable = false; ContainerLocator.Container.Resolve().ThreadEnable = false; energyStorageService.EnergyStorageStateMachine.Fire(Core.Enums.EnergyStorageStateTrig.HandTrig); base.OnExit(e); } private async Task PreloadBmsViews() { // 预加载视图 await Application.Current.Dispatcher.InvokeAsync(() => { var container = ContainerLocator.Container; // 在主 UI 线程上预加载视图 var region = container.Resolve().Regions["MainViewContentRegion"]; var view = region.GetView("BmsView"); if (view == null) { view = new BmsView(); // 实例化视图 region.Add(view, "BmsView"); } }); } private async Task PreloadPcsViews() { // 预加载视图 await Application.Current.Dispatcher.InvokeAsync(() => { var container = ContainerLocator.Container; // 在主 UI 线程上预加载视图 var region = container.Resolve().Regions["MainViewContentRegion"]; var view = region.GetView("PcsView"); if (view == null) { view = new PcsView(); // 实例化视图 region.Add(view, "PcsView"); } }); } private async Task PreloadPDashBoardViews() { // 预加载视图 await Application.Current.Dispatcher.InvokeAsync(() => { var container = ContainerLocator.Container; // 在主 UI 线程上预加载视图 var region = container.Resolve().Regions["MainViewContentRegion"]; var view = region.GetView("DashBoardView"); if (view == null) { view = new DashBoardView(); // 实例化视图 region.Add(view, "DashBoardView"); } }); } } }