using LAEPS.ViewModels; using LAEPS.ViewModels.Dialogs; using LAEPS.Views; using LAEPS.Views.Dialogs; using Castle.DynamicProxy; using LAEPS.Views; using System.Configuration; using System.Data; using System.Reflection; using System.Windows; using static System.Runtime.InteropServices.JavaScript.JSType; using UIShare.PubEvent; using Notifications.Wpf.Core; using Logger; using Common; using ORM; namespace LAEPS { /// /// Interaction logic for App.xaml /// public partial class App : PrismApplication { protected override Window CreateShell() { //UI线程未捕获异常处理事件 this.DispatcherUnhandledException += OnDispatcherUnhandledException; //Task线程内未捕获异常处理事件 TaskScheduler.UnobservedTaskException += OnUnobservedTaskException; ////多线程异常 AppDomain.CurrentDomain.UnhandledException += OnUnhandledException; return Container.Resolve(); } private void OnDispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e) { LoggerHelper.Error(e.Exception.Message,e.Exception.StackTrace); } private void OnUnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e) { LoggerHelper.Error(e.Exception.Message, e.Exception.StackTrace); } private void OnUnhandledException(object sender, UnhandledExceptionEventArgs e) { //记录dump文件 Exception ex = e.ExceptionObject as Exception; MiniDump.TryDump($"dumps\\Error_{DateTime.Now:yyyy-MM-dd HH-mm-ss-ms}.dmp", MiniDump.Option.WithFullMemory, ex); } protected override void OnInitialized() { //初始化数据库 DatabaseConfig.SetTenant(10001); DatabaseConfig.InitMySql("127.0.0.1",3306,"LAEPS","root","123456"); DatabaseConfig.CreateDatabaseAndCheckConnection(createDatabase: true, checkConnection: true); SqlSugarContext.InitDatabase(); //显示登录窗口 var login=Container.Resolve(); var re=Container.Resolve(); RegionManager.SetRegionManager(login, re); RegionManager.SetRegionManager(Application.Current.MainWindow, re); login.Show(); } protected override void RegisterTypes(IContainerRegistry containerRegistry) { //注册弹窗 containerRegistry.RegisterDialog("MessageBox"); // 注册通知管理器 INotificationManager NotificationManager = new NotificationManager(); containerRegistry.RegisterInstance(NotificationManager); } //指定模块加载方式(需要手动将模块生成的dll放入Modules文件夹中) protected override IModuleCatalog CreateModuleCatalog() { //指定模块加载方式为从文件夹中以反射发现并加载module(推荐用法) return new DirectoryModuleCatalog() { ModulePath = @".\Modules" }; } //手动模块加载方式 //protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog) //{ // Type moduleAType = typeof(LoginModule.LoginModule); // moduleCatalog.AddModule(new ModuleInfo() // { // ModuleName = moduleAType.Name, // ModuleType = moduleAType.AssemblyQualifiedName, // InitializationMode = InitializationMode.OnDemand // }); // base.ConfigureModuleCatalog(moduleCatalog); //} } }