From a258ecf8e9d9d6f05621dd9e612d22bf58ed2042 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=9D=E5=BF=83=E6=B5=AE=E6=A2=A6?= <61831881+cxfm666@users.noreply.github.com> Date: Sun, 21 Apr 2024 18:43:39 +0800 Subject: [PATCH] Fix startup fail --- GameServer/Program/EntryPoint.cs | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/GameServer/Program/EntryPoint.cs b/GameServer/Program/EntryPoint.cs index 84c24d9f..0392fab3 100644 --- a/GameServer/Program/EntryPoint.cs +++ b/GameServer/Program/EntryPoint.cs @@ -23,6 +23,16 @@ namespace EggLink.DanhengServer.Program public static void Main(string[] args) { + AppDomain.CurrentDomain.ProcessExit += (sender, eventArgs) => { + Console.WriteLine("Shutting down..."); + PerformCleanup(); + }; + Console.CancelKeyPress += (sender, eventArgs) => { + Console.WriteLine("Cancel key pressed. Shutting down..."); + eventArgs.Cancel = true; + PerformCleanup(); + Environment.Exit(0); + }; var time = DateTime.Now; // Initialize the logfile var counter = 0; @@ -89,7 +99,6 @@ namespace EggLink.DanhengServer.Program // generate the handbook HandbookGenerator.Generate(); - SetConsoleCtrlHandler(new ConsoleCtrlDelegate(ConsoleCtrlHandler), true); WebProgram.Main([$"--urls=http://{GetConfig().HttpServer.PublicAddress}:{GetConfig().HttpServer.PublicPort}/"]); logger.Info($"Dispatch Server is running on http://{GetConfig().HttpServer.PublicAddress}:{GetConfig().HttpServer.PublicPort}/"); @@ -113,18 +122,9 @@ namespace EggLink.DanhengServer.Program return ConfigManager.Config; } - private delegate bool ConsoleCtrlDelegate(int ctrlType); - - [LibraryImport("Kernel32")] // Windows only try to find a way to do this on linux - [return: MarshalAs(UnmanagedType.Bool)] - private static partial bool SetConsoleCtrlHandler(ConsoleCtrlDelegate handler, [MarshalAs(UnmanagedType.Bool)] bool add); - - private static bool ConsoleCtrlHandler(int ctrlType) + private static void PerformCleanup() { - logger.Info("Shutting down..."); Listener.Connections.Values.ToList().ForEach(x => x.Stop()); - Environment.Exit(0); - return false; } } }