using HaloPixelToolBox.Backend.Profiles.CrossVersionProfiles; using HaloPixelToolBox.Backend.Utilities; using XFEExtension.NetCore.WinUIHelper.Interface.Services; using XFEExtension.NetCore.WinUIHelper.Utilities; using XFEExtension.NetCore.WinUIHelper.Utilities.Helper; using XFEExtension.NetCore.XFEConsole; using AppShellPage = HaloPixelToolBox.Backend.Views.AppShellPage; using LogViewPage = HaloPixelToolBox.Backend.Views.LogViewPage; using MainPage = HaloPixelToolBox.Backend.Views.MainPage; using SettingPage = HaloPixelToolBox.Backend.Views.SettingPage; using UnhandledExceptionEventArgs = System.UnhandledExceptionEventArgs; namespace HaloPixelToolBox.Backend; /// /// Provides application-specific behavior to supplement the default Application class. /// public partial class App : Application { /// /// 主页窗口 /// public static MainWindow MainWindow { get; set; } = new(); /// /// Initializes the singleton application object. This is the first line of authored code /// executed, and as such is the logical equivalent of main() or WinMain(). /// public App() { XFEConsole.UseXFEConsoleLog(); XFEConsole.Log.LogPath = $@"{AppPath.LogDictionary}\{DateTime.Now:yyyy-M-d_HH-mm-ss}.log"; Console.WriteLine("正在启动应用程序..."); this.InitializeComponent(); AppThemeHelper.Theme = SystemProfile.Theme; PageManager.RegisterPage(typeof(AppShellPage)); PageManager.RegisterPage(typeof(MainPage)); PageManager.RegisterPage(typeof(LogViewPage)); PageManager.RegisterPage(typeof(AddressResolveManagePage)); PageManager.RegisterPage(typeof(IPBanManagePage)); PageManager.RegisterPage(typeof(SettingPage)); UnhandledException += App_UnhandledException; AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; } private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { if (e.ExceptionObject is not Exception ex) return; Console.WriteLine($"[ERROR]应用程序发生错误:{ex.Message}"); Console.WriteLine($"[TRACE]{ex.StackTrace}"); if (ServiceManager.GetService() is not { } messageService) return; messageService.ShowMessage(ex.Message, "发生错误", InfoBarSeverity.Error); } private static void App_UnhandledException(object sender, Microsoft.UI.Xaml.UnhandledExceptionEventArgs e) { Console.WriteLine($"[ERROR]应用程序发生错误:{e.Message}"); Console.WriteLine($"[TRACE]{e.Exception.StackTrace}"); if (ServiceManager.GetService() is not { } messageService) return; messageService.ShowMessage(e.Message, "发生错误", InfoBarSeverity.Error); e.Handled = true; } /// /// Invoked when the application is launched. /// /// Details about the launch request and process. protected override void OnLaunched(LaunchActivatedEventArgs args) { MainWindow.Content = new AppShellPage(); MainWindow.Activate(); AppThemeHelper.MainWindow = MainWindow; Console.WriteLine("应用程序已启动"); } }