对开始终止的流程做出反应

时间:2011-11-28 13:22:10

标签: c# .net windows process

问题源于好奇心:

如何通知或轮询,以查看当前何时终止某个流程?

因此,我的应用程序可以从流程中侦听“终止开始”事件,例如,跟踪特定流程平均关闭的时间长度?

注意,这与我翻转kill开关的过程不一致,这很简单,但是我的应用程序只能作为观察者。

非常感谢任何帮助:)

3 个答案:

答案 0 :(得分:3)

我知道在没有轮询的情况下执行此操作的唯一方法是通过WMI。网上有很多例子,例如: Using WMI to monitor process creation, deletion and modification in .NET

WMI完全由.net库包装。例如,上面的示例使用ManagementEventWatcher订阅WMI事件。在System.Management名称空间中有一整套WMI善良。

答案 1 :(得分:0)

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

但是我要做的是模仿这个观察是创建一个Windows服务,在指定的时间间隔内轮询进程(比如,每2秒或者你可以接受多少延迟)。这样,您可以在其他流程结束时采取相应的行动。

答案 2 :(得分:0)

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

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

我会使用ProcessId作为我的词典的关键,以检查它何时启动以及何时终止。