94 lines
3.7 KiB
C#
94 lines
3.7 KiB
C#
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
|
|
{
|
|
/// <summary>
|
|
/// Interaction logic for App.xaml
|
|
/// </summary>
|
|
public partial class App : PrismApplication
|
|
{
|
|
protected override Window CreateShell()
|
|
{
|
|
//UI线程未捕获异常处理事件
|
|
this.DispatcherUnhandledException += OnDispatcherUnhandledException;
|
|
//Task线程内未捕获异常处理事件
|
|
TaskScheduler.UnobservedTaskException += OnUnobservedTaskException;
|
|
////多线程异常
|
|
AppDomain.CurrentDomain.UnhandledException += OnUnhandledException;
|
|
return Container.Resolve<ShellView>();
|
|
}
|
|
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<LoginModuleView>();
|
|
var re=Container.Resolve<IRegionManager>();
|
|
RegionManager.SetRegionManager(login, re);
|
|
RegionManager.SetRegionManager(Application.Current.MainWindow, re);
|
|
login.Show();
|
|
}
|
|
protected override void RegisterTypes(IContainerRegistry containerRegistry)
|
|
{
|
|
//注册弹窗
|
|
containerRegistry.RegisterDialog<MessageBoxView, MessageBoxViewModel>("MessageBox");
|
|
// 注册通知管理器
|
|
INotificationManager NotificationManager = new NotificationManager();
|
|
containerRegistry.RegisterInstance<INotificationManager>(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);
|
|
//}
|
|
}
|
|
}
|