我有一个 WinForms 应用程序,它依赖于几个我控制有限的库,例如 Forms.Images 和 Forms.WebBrowser。零星的突然内存泄漏导致我的应用程序崩溃。这些不是随着时间的推移而累积的内存泄漏。它们是随机的,通常是不同的 COM 异常,无法预测——有时它们会在一小时后发生,有时会在一天后发生。
我目前至少暂时解决该问题的方法是让另一个应用程序使用 GetProcessesByName() 验证第一个应用程序是否正在运行。但是,这是有问题的,因为正在进行的进程有时会崩溃但不会关闭。我只是收到一条 WER 消息(尽管 WER 在计算机上已关闭)。更糟糕的是,当第一个进程崩溃并且内存泄漏累积时,第二个进程检查应用程序也崩溃了。然后在我手动重新启动整个shabang之前没有任何效果。
1) 有没有人知道让进程 A 检查进程 B 是否正在运行而不让进程 A 遇到导致进程 B 崩溃的内存问题的有效方法?
2)如果上述方法不可行或太难,是否有人知道任何好的第三方工具可用于确保进程在没有任何未解决的 WER 错误的情况下运行,如果检测到 WER 故障则重新启动进程,并且可以承受最大的RAM?
谢谢!