我正在解决我们在 .NET WinForms 应用程序中遇到的一些内存问题。我正在使用SciTech 的 .NET Memory Profiler和dotTrace,它们似乎都在通过 .NET Framework 控件中的静态事件处理程序指示根分配。从 google'ing 周围,我在这里和这里找到了这方面的报告,但这似乎是在 .NET Framework 的 v1.1 和承诺的 2.0 修复上报告的。我们在 2.0 上运行,我们仍然看到这些问题。我发现的前 25 个内存违规者都指向这些静态事件处理程序,特别是 SystemEvents.UserPreferenceChanged。 这家伙竭尽全力寻找一种方法来放松这些处理程序。我还没有尝试过,但我确实尝试了 Microsoft 支持票中提到的解决方法,但没有一个对我有用。
我很清楚事件处理程序(尤其是长期存在的静态处理程序)的泄漏潜力,但这几乎是我无法控制的。有人对此有经验吗?