|
|
|
|
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
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Interaction logic for App.xaml
|
|
|
|
|
/// </summary>
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
var appConfig = host.Services.GetService<AppConfig>();
|
|
|
|
|
var logPath = $"{appConfig.logPath}/Logs/{DateTime.UtcNow:yyyy-MM-dd}/";
|
|
|
|
|
Log.Information($"系统初始化完成,日志存放路径:{appConfig.logPath}");
|
|
|
|
|
|
|
|
|
|
await host.StartAsync();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// CreateHostBuilder
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="args"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static IHostBuilder CreateHostBuilder(string[] args) =>
|
|
|
|
|
Host.CreateDefaultBuilder(args)
|
|
|
|
|
.UseSerilog()
|
|
|
|
|
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
|
|
|
|
|
.ConfigureWebHostDefaults(webBuilder =>
|
|
|
|
|
{
|
|
|
|
|
webBuilder.UseStartup<Startup>();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// Exit事件
|
|
|
|
|
protected override void OnExit(ExitEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
base.OnExit(e);
|
|
|
|
|
|
|
|
|
|
Log.Information($"系统退出,当前时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
|
|
|
|
|
// 释放资源
|
|
|
|
|
// ...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|