在应用程序关闭时运行“终止”代码

MxLDevs

我有一个仅运行另一个程序并对其进行监视的程序。

static void Main(string[] args)
{
    using (Process exeProc = Process.Start(getStartInfo()))
    {
        while (!exeProc.HasExited)
        {
            // does some stuff while the monitored program is still running
        }
    }

    // 
    Console.WriteLine("done");
}

当其他程序退出时,我的程序也退出。

我也想相反:我如何做到这一点,以便关闭程序也将终止我正在监视的进程?

传教士

已经有另一个问题链接到msdn上的一个具有有效答案的问题(我对间接方法了解太多)。C#如何在命令行应用程序中接收系统关闭或退出事件

我将在此处发布代码,因为它是首选代码,因为我要逐字记录此代码段,因此只想在应交的地方注明功劳。

namespace Detect_Console_Application_Exit2
{
    class Program
    {
        private static bool isclosing = false;
        static void Main(string[] args)
        {
            SetConsoleCtrlHandler(new HandlerRoutine(ConsoleCtrlCheck), true);

            Console.WriteLine("CTRL+C,CTRL+BREAK or suppress the application to exit");
            while (!isclosing) ;

        }

        private static bool ConsoleCtrlCheck(CtrlTypes ctrlType)
        {
            // Put your own handler here
            switch (ctrlType)
            {
                case CtrlTypes.CTRL_C_EVENT:
                    isclosing = true;
                    Console.WriteLine("CTRL+C received!");
                    break;

                case CtrlTypes.CTRL_BREAK_EVENT:
                    isclosing = true;
                    Console.WriteLine("CTRL+BREAK received!");
                    break;

                case CtrlTypes.CTRL_CLOSE_EVENT:
                    isclosing = true;
                    Console.WriteLine("Program being closed!");
                    break;

                case CtrlTypes.CTRL_LOGOFF_EVENT:
                case CtrlTypes.CTRL_SHUTDOWN_EVENT:
                    isclosing = true;
                    Console.WriteLine("User is logging off!");
                    break;

            }
            return true;
        }



        #region unmanaged
        // Declare the SetConsoleCtrlHandler function
        // as external and receiving a delegate.

        [DllImport("Kernel32")]
        public static extern bool SetConsoleCtrlHandler(HandlerRoutine Handler, bool Add);

        // A delegate type to be used as the handler routine
        // for SetConsoleCtrlHandler.
        public delegate bool HandlerRoutine(CtrlTypes CtrlType);

        // An enumerated type for the control messages
        // sent to the handler routine.
        public enum CtrlTypes
        {
            CTRL_C_EVENT = 0,
            CTRL_BREAK_EVENT,
            CTRL_CLOSE_EVENT,
            CTRL_LOGOFF_EVENT = 5,
            CTRL_SHUTDOWN_EVENT
        }

        #endregion

    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何关闭暂停的应用程序的自动终止

来自分类Dev

PyQt应用程序成功关闭,但进程未终止?

来自分类Dev

运行外部应用程序直到关闭

来自分类Dev

在启动Erlang应用程序时运行代码

来自分类Dev

MessageBox“程序异常终止”使我的应用程序运行

来自分类Dev

在程序关闭和PC关闭时运行的代码

来自分类Dev

安装后在Windows启动时运行的应用程序

来自分类Dev

如何在应用程序关闭时终止WatchService?

来自分类Dev

应用关闭时运行的代码

来自分类Dev

pyqt5-关闭/终止应用程序

来自分类Dev

Django在应用程序启动时运行代码,但在迁移时不运行

来自分类Dev

Ubuntu 13.10:如何记住关闭时运行的应用程序,以便它们在登录时启动?

来自分类Dev

Xamarin Firebase消息在应用程序处于关闭状态时运行意图

来自分类Dev

独立ROOT应用程序在关闭画布后不会终止

来自分类Dev

处理关闭和终止应用程序事件(SwiftUI)

来自分类Dev

Ubuntu 13.10:如何记住关闭时运行的应用程序,以便它们在登录时启动?

来自分类Dev

如何关闭挂起的应用程序的自动终止

来自分类Dev

VB.NET应用程序启动时运行代码

来自分类Dev

在我的应用程序中计划任务:在应用程序关闭时运行应用程序功能

来自分类Dev

mac应用程序,在关闭时终止

来自分类Dev

编写仅在Windows Phone应用程序首次运行时运行的代码

来自分类Dev

在启动Erlang应用程序时运行代码

来自分类Dev

在应用程序运行时运行任务

来自分类Dev

同时运行多个应用程序

来自分类Dev

如何在Windows启动时运行WPF应用程序而不使用任何代码

来自分类Dev

无法终止正在运行的程序/应用程序

来自分类Dev

关闭Python守护程序时运行代码

来自分类Dev

如何在退出Vorpal.js应用程序时运行代码?

来自分类Dev

在没有 GCM/Firebase 的情况下关闭应用程序时运行 Android 通知

Related 相关文章

  1. 1

    如何关闭暂停的应用程序的自动终止

  2. 2

    PyQt应用程序成功关闭,但进程未终止?

  3. 3

    运行外部应用程序直到关闭

  4. 4

    在启动Erlang应用程序时运行代码

  5. 5

    MessageBox“程序异常终止”使我的应用程序运行

  6. 6

    在程序关闭和PC关闭时运行的代码

  7. 7

    安装后在Windows启动时运行的应用程序

  8. 8

    如何在应用程序关闭时终止WatchService?

  9. 9

    应用关闭时运行的代码

  10. 10

    pyqt5-关闭/终止应用程序

  11. 11

    Django在应用程序启动时运行代码,但在迁移时不运行

  12. 12

    Ubuntu 13.10:如何记住关闭时运行的应用程序,以便它们在登录时启动?

  13. 13

    Xamarin Firebase消息在应用程序处于关闭状态时运行意图

  14. 14

    独立ROOT应用程序在关闭画布后不会终止

  15. 15

    处理关闭和终止应用程序事件(SwiftUI)

  16. 16

    Ubuntu 13.10:如何记住关闭时运行的应用程序,以便它们在登录时启动?

  17. 17

    如何关闭挂起的应用程序的自动终止

  18. 18

    VB.NET应用程序启动时运行代码

  19. 19

    在我的应用程序中计划任务:在应用程序关闭时运行应用程序功能

  20. 20

    mac应用程序,在关闭时终止

  21. 21

    编写仅在Windows Phone应用程序首次运行时运行的代码

  22. 22

    在启动Erlang应用程序时运行代码

  23. 23

    在应用程序运行时运行任务

  24. 24

    同时运行多个应用程序

  25. 25

    如何在Windows启动时运行WPF应用程序而不使用任何代码

  26. 26

    无法终止正在运行的程序/应用程序

  27. 27

    关闭Python守护程序时运行代码

  28. 28

    如何在退出Vorpal.js应用程序时运行代码?

  29. 29

    在没有 GCM/Firebase 的情况下关闭应用程序时运行 Android 通知

热门标签

归档