我怎样才能解决这个系统.组件模型.Win32面板中的异常

本文关键字:Win32 模型 异常 组件 系统 解决 | 更新日期: 2023-09-27 18:32:39

>我有一个面板加载 257 个用户控件。当它达到 191 时,它将返回 System.ComponentModel.Win32Exception。

我已经红了很多关于解决异常的文章。我用过GC。Collect() 在 for 循环内部和之后释放内存,因为每次执行循环时,内存消耗都会增加。我也试过.在循环之前和之后处理,但没有一个工作。

我的代码是用 C# 编写的。

一个用户控件加载 36 个控件,程序需要加载超过 191 个用户控件。

我怎样才能解决这个系统.组件模型.Win32面板中的异常

是否运行进程资源管理器或 Windows 任务管理器来查看 GDI 对象、句柄、线程和用户对象?如果没有,请选择要查看的列(任务管理器选择查看->选择列...然后运行你的应用并查看该应用的那些列,看看其中一个是否变得非常大。

应用程序的窗口句柄限制为 10,000 个句柄。可能是您认为已清理但尚未释放的 UI 组件

可能是您的程序创建了太多句柄。需要使用内存配置文件 r 查找内存泄漏。我使用 ANTS 内存性能分析器。此外,如果要在窗体关闭之前从窗体中删除控件,请确保在控件上调用 Dispose 方法(否则控件不会释放)。还必须确保没有向控件注册的事件。