有没有办法找出进程GUI在Windows中完全加载的时间?

时间:2019-07-12 20:44:42

标签: c# .net

我已经设置了一个Windows服务,该服务会不断监听Torch浏览器何时开始运行,然后在10秒钟后关闭程序。问题是当您启动Torch浏览器时,根据时钟速度,它需要4到5秒才能启动。在我的项目中,我使用了Process.Kill()方法来结束该过程。这是我用来杀死的代码:

Process[] procs = Process.GetProcessesByName("torch");

Timer t = new Timer();
t.Elapsed += new ElapsedEventHandler((object sender, ElapsedEventArgs e) => KillAll(procs));
t.AutoReset = false;
t.Enabled = true;

private void KillAll(Process[] procs)
{
   foreach(Process proc in procs)
   {
      proc.Kill();  
   }
}

如何确保GUI进程完全加载后计时器启动?

1 个答案:

答案 0 :(得分:0)

根据建议,您可以使用WaitForInputIdle()查看该过程是否准备就绪:

  

WaitForInputIdle可以随时使用,而不仅仅是在应用过程中   启动。

您还没有说明它正在运行哪种类型的应用程序。在杀死进程之前,这有十秒钟的阻塞睡眠时间:

<SomeContext.Consumer>
{value => <ChildComponent value={value}>}
</SomeContext.Consumer>

它将在循环中等待,直到所有“火炬”进程准备就绪,睡眠十秒钟,然后全部杀死。