Сделайте что-нибудь на консольном выходе C# - PullRequest
0 голосов
/ 03 мая 2020

Я пытался выполнить функцию при закрытии программы, она работает, когда я нажимаю CTRL + C, но когда я закрываю ее с помощью "X", функция выполняется не полностью.

Так что я бы хотел чтобы узнать, если вы знаете, почему, и если да, то как решить проблему.

Я пытался сделать то, что упомянуто на этой странице Захват консоли выхода C#.

Заранее благодарю за ответы.

        static void Main(string[] args)
        {
            _handler += new EventHandler(Handler);
            SetConsoleCtrlHandler(_handler, true);   
        }
        enum CtrlType
        {
            CTRL_C_EVENT = 0,
            CTRL_BREAK_EVENT = 1,
            CTRL_CLOSE_EVENT = 2,
            CTRL_LOGOFF_EVENT = 5,
            CTRL_SHUTDOWN_EVENT = 6
        }

        private static bool Handler(CtrlType sig)
        {
            example();

            exitSystem = true;

            Environment.Exit(-1);

            return true;
        }

        public static bool exitSystem = false;

        [DllImport("Kernel32")]
        private static extern bool SetConsoleCtrlHandler(EventHandler handler, bool add);

        private delegate bool EventHandler(CtrlType sig);
        static EventHandler _handler;
        public static void example()
        {
            for (int i = 0; i < 250000; i++)
                Console.WriteLine(i);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...