检查任务何时开始/关闭

时间:2016-07-14 11:38:29

标签: c# process

我想知道如何从任务管理器中读取任务是否已启动/已关闭。我想到的方式是,我有一个循环,它不断检查新任务是否已经启动并在任务管理器中搜索特定的字符串。虽然这是可能的,但我并不是真的想要使用这种方法,因为它会“吃掉”#34;很多表现,我想,所以我想问,如果你有办法检查,程序是否已经开始/关闭。这就是我的想法:

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

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

此致

1 个答案:

答案 0 :(得分:0)

检查正在运行的过程很简单:

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

您还可以检查Length是否大于零,或者存储上次检查时正在运行的进程数量,看看它是否不同(如果小于最后一个数量,其中一个进程已关闭,如果更多,一个开始),因为你实际上可以运行多个“记事本”。

这使用“友好名称”(通常是没有exe或路径的可执行文件名称),如果您对具有非常特定路径的非常特定的进程感兴趣,那么您需要迭代GetProcessesByName返回的数组。

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