using Lierda.WPFHelper; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Serilog; using SlnMesnac.Config; using System; using System.Windows; using Autofac.Extensions.DependencyInjection; namespace SlnMesnac.WPF { /// /// Interaction logic for App.xaml /// public partial class App : Application { private System.Threading.Mutex? mutex = null; private LierdaCracker cracker = new LierdaCracker(); public static IServiceProvider? ServiceProvider = null; // Startup事件 protected override async void OnStartup(StartupEventArgs e) { bool ret; mutex = new System.Threading.Mutex(true, System.Diagnostics.Process.GetCurrentProcess().ProcessName, out ret); if (!ret) { MessageBox.Show("应用程序已开启,禁止重复运行"); Environment.Exit(0); } cracker.Cracker(100); //设置GC回收间隔 base.OnStartup(e); var host = CreateHostBuilder(e.Args).Build();//生成宿主。 ServiceProvider = host.Services; await host.StartAsync(); var appConfig = host.Services.GetService(); var logPath = $"{appConfig.logPath}/Logs/{DateTime.UtcNow:yyyy-MM-dd}/"; Log.Information($"系统初始化完成,日志存放路径:{appConfig.logPath}"); } /// /// CreateHostBuilder /// /// /// public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseSerilog() .UseServiceProviderFactory(new AutofacServiceProviderFactory()) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup(); }); // Exit事件 protected override void OnExit(ExitEventArgs e) { base.OnExit(e); Log.Information($"系统退出,当前时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}"); // 释放资源 // ... } } }