在长时间运行的操作系统上使用Process.GetProcesses()性能问题

时间:2017-02-25 07:29:10

标签: c# .net

我开发的功能需要定期扫描运行进程列表,重启退出异常的过程。

我使用Process.GetProcesses()获取当前正在运行的进程列表,这在大多数计算机上都没有性能问题。

但是,当我部署在运行了很长时间的服务器上(已运行147天,新的PID已达百万),使用Process.GetProcesses()处理时间最多100毫秒,正常{{ 1}}处理时间在几毫秒之内。这会影响系统性能。

Process.GetProcesses()

谁能告诉我如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我在MSDN论坛中找到了另一个解决方案。

  

也许获取Process对象,然后使用WaitForExit。或者将EnableRaisingEvents设置为true并处理Exited事件。那你就不需要定期循环了。