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;
using System.Net.Http;
using System.IO;
using System.Net;
using System.Text;
using SlnMesnac.Common;
using System.Net.NetworkInformation;
using System.Linq;
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();
//string url = $"http://172.16.12.100:5001/wcs/RecieveRcs/AgvTaskComplete";
//string result = HttpHelper.Post(url);
//Console.WriteLine(result);
var appConfig = host.Services.GetService();
var logPath = $"{appConfig.logPath}/Logs/{DateTime.UtcNow:yyyy-MM-dd}/";
Log.Information($"系统初始化完成,日志存放路径:{appConfig.logPath}");
}
private void Application_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
{
//记录日志
Console.WriteLine(e.Exception.Message);
}
///
/// CreateHostBuilder
///
///
///
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseSerilog()
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup()
.ConfigureKestrel(serverOptions =>
{
// 修改默认启动端口
serverOptions.ListenAnyIP(4000);
});
});
// Exit事件
protected override void OnExit(ExitEventArgs e)
{
base.OnExit(e);
Log.Information($"系统退出,当前时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
// 释放资源
// ...
}
}
}