【问题标题】:Reacting to a process beginning termination对开始终止的进程做出反应
【发布时间】:2011-11-28 13:22:09
【问题描述】:

这里出于好奇的问题:

我将如何获得通知或轮询,以查看当前何时终止进程?

所以我的应用程序可以侦听来自进程的“终止开始”事件,例如,跟踪特定进程平均需要多长时间才能关闭?

请注意,这与我的进程触发终止开关无关,这很简单,是的,但我的应用程序只能充当观察者。

任何帮助将不胜感激:)

【问题讨论】:

    标签: c# .net windows process


    【解决方案1】:

    我知道您无需轮询即可执行此操作的唯一方法是通过 WMI。网上有很多例子,例如Using WMI to monitor process creation, deletion and modification in .NET.

    WMI 由 .net 库很好地包装。例如,上面的示例使用ManagementEventWatcher 订阅 WMI 事件。在 System.Management 命名空间中有一个完整的 WMI 宝库。

    【讨论】:

      【解决方案2】:

      我不确定是否有办法将其作为“推送”操作(您会以某种方式收到结束过程的通知)。

      但是我要模仿这个观察结果是创建一个 Windows 服务,它以指定的时间间隔(例如,每 2 秒或您可以接受的延迟时间)轮询进程。这样你就可以在其他进程结束时处理这种情况并采取相应的行动。

      【讨论】:

        【解决方案3】:

        我不确定是否有用于订阅进程终止事件的 WIN32 API,但您可以通过获取正在运行的进程列表来进行轮询:

         var processes = System.Diagnostics.Process.GetProcesses();
        

        我会使用ProcessId 作为我的字典的键来检查它何时启动和何时终止。

        【讨论】:

        • 无需轮询。请改用 WMI。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-18
        • 2023-03-22
        • 2017-11-08
        • 1970-01-01
        相关资源
        最近更新 更多