using Castle.DynamicProxy; using Common; using LOT.ViewModels; using LOT.ViewModels.Dialogs; using LOT.Views; using LOT.Views; using LOT.Views.Dialogs; using Logger; using Notifications.Wpf.Core; using ORM; using Service.Implement; using Service.Interface; using System.Configuration; using System.Data; using System.Reflection; using System.Windows; using UIShare.PubEvent; using static System.Runtime.InteropServices.JavaScript.JSType; namespace LOT { /// /// 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,"LOT","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" }; } } }