Вызов функции при закрытии консольного приложения - C#

Узнай цену своей работы

Формулировка задачи:

Пытаюсь реализовать вызов функции при закрытии консольного приложения(будь то закрытие пользователя или выключение ПК) Нашёл похожий вопрос на стаке(взял оттуда код), и хочу сделать, чтобы если пользователь ввёл 0, то в MessageBox выводилось 0, но не могу разобраться, как это сделать. Подскажите, пожалуйста.
        internal delegate void SignalHandler(ConsoleSignal consoleSignal, int vs);
 
        internal enum ConsoleSignal
        {
            CtrlC = 0,
            CtrlBreak = 1,
            Close = 2,
            LogOff = 5,
            Shutdown = 6
        }
 
        internal static class ConsoleHelper
        {
            [DllImport("Kernel32", EntryPoint = "SetConsoleCtrlHandler")]
            public static extern bool SetSignalHandler(SignalHandler handler, bool add);
        }

        private static SignalHandler signalHandler;
 
        static void Main(string[] args)
        {
            int p = int.Parse(Console.ReadLine());
            if (p == 0)
            {
                //сделать returnedValue = 0
            }
            signalHandler += HandleConsoleSignal;
            ConsoleHelper.SetSignalHandler(signalHandler, true);
 
            int i = 0;
            while (true)
            {
                i++;
                Console.WriteLine("*"+i.ToString());
            }
        }
 
        private static void HandleConsoleSignal(ConsoleSignal consoleSignal, int returnedValue)
        {
            MessageBox.Show(returnedValue.ToString());
        }
    }

Решение задачи: «Вызов функции при закрытии консольного приложения»

textual
Листинг программы
        internal enum ConsoleSignal
        {
            CtrlC = 0,
            CtrlBreak = 1,
            Close = 2,
            LogOff = 5,
            Shutdown = 6
        }
 
        [DllImport("Kernel32", EntryPoint = "SetConsoleCtrlHandler")]
        public static extern bool SetSignalHandler(ActionDeleg deleg, bool add);
 
        internal delegate void ActionDeleg(ConsoleSignal consoleSignal);
        static void Main()
        {
            SetSignalHandler(
                (cs) => 
                {
                    MessageBox.Show(cs.ToString());
                },
                true);
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5
Похожие ответы