【发布时间】:2022-11-10 23:04:08
【问题描述】:
我正在尝试编写一个自动化软件来在不同的进程启动时执行某些事情,然后在它们关闭时执行另一件事。
我已经使用ManagementEventWatcher 成功地让它工作了。但是,这会在 Windows 中使用 WMI,这反过来会导致 WMI Provider Host 使用约 4% 的 CPU。我觉得这有点过分了。
有没有办法在没有极端 CPU 开销的情况下做我想做的事?
谢谢
【问题讨论】:
-
有几种方法。
ManagementEventWatcher是一种很好的解耦即发即弃的方法,但它可能有点密集。一种不那么密集但更“手动”的方法就是每隔几秒钟获取一次进程列表并搜索您正在寻找的进程。如果您可以访问其他程序,那么最不密集的解决方案是从其他程序向您的程序发送一条消息,指示它已启动,并传递进程 ID。这可以通过很多方式来完成。最常见的是匿名管道(仅限 Windows)或 TCP/UDP 套接字。 -
@Jesse 感谢您的反馈!不幸的是,我无法访问其他程序,因此任何形式的通信都不起作用。我的印象是获取所有进程并手动搜索会增加我的 CPU 使用率。无论如何我都会尝试一下,所以我不妨尝试一下,看看开销有多糟糕。再次感谢!