You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

99 lines
3.4 KiB
C#

2 years ago
using Khd.Core.EntityFramework;
using Khd.Core.Wcs;
using Khd.Core.Wcs.Global;
using Masuit.Tools.Logging;
using Microsoft.EntityFrameworkCore;
2 years ago
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
2 years ago
using Microsoft.Extensions.Hosting;
1 year ago
using System.Diagnostics;
2 years ago
internal class Program
{
2 years ago
2 years ago
private static void Main(string[] args)
{
2 years ago
Console.ForegroundColor = ConsoleColor.Yellow;
2 years ago
Init(); //初始化加载配置文件
2 years ago
AppDomain.CurrentDomain.UnhandledException += GlobalExceptionHandler; //全局异常捕获
try
{
1 year ago
Process[] processes = Process.GetProcessesByName("Khd.Core.Wcs");
if (processes.Length > 1)
{
Console.Write("系统已经启动,请勿重复启动1");
Console.ReadLine();
return;
}
var mutex = new Mutex(true, "Khd.Core.Wcs", out bool ret);
2 years ago
if (ret)
{
IHost host = CreateHostBuilder(args).Build();
2 years ago
LogManager.Info("系统启动开始");
Console.WriteLine($"{DateTime.Now}:系统启动开始");
MainCentralControl main = new(host);
2 years ago
main.Start();
mutex.ReleaseMutex(); // 释放 Mutex
2 years ago
2 years ago
LogManager.Info("系统启动成功");
2 years ago
Console.WriteLine($"{DateTime.Now}:系统启动成功");
while (true)
{
Console.ReadLine();
}
2 years ago
}
else
{
Console.Write("系统重复开启,请先关闭之前窗口");
2 years ago
Console.ReadLine();
2 years ago
}
}
catch (Exception ex)
{
Console.Write("系统启动异常:" + ex.Message + "\n" + ex.StackTrace);
2 years ago
LogManager.Error(ex);
2 years ago
}
}
private static void GlobalExceptionHandler(object sender, UnhandledExceptionEventArgs e)
{
2 years ago
if (e.ExceptionObject is Exception exception)
2 years ago
{
Console.WriteLine("全局异常捕获:");
Console.WriteLine(exception.Message);
Console.WriteLine(exception.StackTrace);
LogManager.Info("全局异常捕获:" + exception.Message);
}
else
{
Console.WriteLine("未知异常捕获:");
Console.WriteLine(e.ExceptionObject);
LogManager.Info("未知异常捕获:" + e.ExceptionObject);
}
}
/// <summary>
/// 初始化加载配置文件
/// </summary>
2 years ago
private static void Init()
2 years ago
{
IConfigurationRoot configuration = new ConfigurationBuilder()
2 years ago
.SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
.AddJsonFile("appsettings.json")
.Build();
2 years ago
2 years ago
StaticData.PlcConfigs = configuration.GetSection("PlcConfigs").Get<List<PlcConfig>>();
2 years ago
ConnectionStrings.ConnectionString = configuration["ConnectionStrings:DefaultConnection"];
2 years ago
}
2 years ago
private static IHostBuilder CreateHostBuilder(string[] args) =>
2 years ago
Host.CreateDefaultBuilder(args)
.ConfigureServices((_, services) =>
{
services.AddDbContext<DefaultDbContext>(options =>
2 years ago
options.UseMySql(ConnectionStrings.ConnectionString, new MySqlServerVersion(new Version(8, 0, 31))), ServiceLifetime.Transient);
2 years ago
});
}