问题源于好奇心:
如何通知或轮询,以查看当前何时终止某个流程?
因此,我的应用程序可以从流程中侦听“终止开始”事件,例如,跟踪特定流程平均关闭的时间长度?
注意,这与我翻转kill开关的过程不一致,这很简单,但是我的应用程序只能作为观察者。
非常感谢任何帮助:)
答案 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
作为我的词典的关键,以检查它何时启动以及何时终止。