检查任务何时开始/关闭

Check when task starts / shuts down

我想知道如何从任务管理器中读取任务是否已启动/已关闭。我的想法是,我有一个循环,它不断检查新任务是否已经开始,并在任务管理器中搜索特定的字符串。虽然这是可能的,但我真的不想使用那个方法,因为它会 "eat" 很多性能,我想所以我想问一下,如果你有办法检查,如果一个程序有启动/关闭。我是这样想的:

    while(!"notepad.exe found")
    {
       SearchForTask("notepad.exe");
       if(notepad.exe found)
         //Do Something
    }

如果有其他方法,请告诉我。

此致

检查 运行 过程很简单:

 if(Process.GetProcessesByName("notepad").Length == 0)
 {
    // "notepad" not running
 } else {
    // At least one "notepad" process is running
 }

您还可以检查 Length 是否大于零,或者存储上次检查时 运行 处理的数量,看看它是否不同(如果小于上次数量,一个的进程关闭,如果更多,一个启动),因为你实际上可以有多个 "notepad" 运行.

这使用 "friendly name"(通常是没有 exe 或路径的可执行文件名称),如果您对具有非常特定路径的非常特定的进程感兴趣,那么您需要遍历 GetProcessesByName returns.

的数组

如果你在循环中这样做,我会在循环中留出一些空闲时间,这样你就不会经常检查(这取决于你在做什么),否则你可以使用一个计时器(许多可用计时器之一)并每 'n' 毫秒轮询一次。