我有两个程序,它们通过循环中的方法简单地检查彼此的进程是否存在System.Diagnostics.Process.GetProcessesByName,从而消除了用户关闭它们而不产生任何后果的可能性,理论上一切都应该正常工作,但结果是 100% 的 CPU 使用率两个程序(一起工作时,都占用 40 -50% 的 CPU)。问题是,有没有更便宜的方法?或者有什么方法可以减少使用的内存?
我有两个程序,它们通过循环中的方法简单地检查彼此的进程是否存在System.Diagnostics.Process.GetProcessesByName,从而消除了用户关闭它们而不产生任何后果的可能性,理论上一切都应该正常工作,但结果是 100% 的 CPU 使用率两个程序(一起工作时,都占用 40 -50% 的 CPU)。问题是,有没有更便宜的方法?或者有什么方法可以减少使用的内存?
事件方法(同步对象)。会吃最少的资源。
代码示例,应用程序 1。对于应用程序 2,您需要将所有 1 替换为 2,反之亦然。
不必缠绕无限循环。Process 类有一个 WaitForExit 方法和一个 OnExited 事件。一次找到想要的进程就够了,然后要么用 Wait 等待它完成,要么订阅退出事件,并在处理程序中采取行动重新启动,这取决于你个人如何更方便。
问题是该方法是在无限循环中调用的
while(true)。任何被调用的方法都会无限地填充应用程序允许的所有内存。最简单的解决方案是在 Sleep 循环内插入。