Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何解决面板中的System.ComponentModel.Win32异常?_C# - Fatal编程技术网

C# 如何解决面板中的System.ComponentModel.Win32异常?

C# 如何解决面板中的System.ComponentModel.Win32异常?,c#,C#,我有一个面板,加载257个用户控件。当达到191时,它将返回System.ComponentModel.Win32Exception 我已经读了很多关于解决异常的文章。我使用了GC.Collect-inside和after-for循环来释放内存,因为每次执行循环时,内存消耗都会增加。我也尝试过。在循环之前和之后进行处理,但都不起作用 我的代码是用C写的 一个用户控件加载36个控件,程序需要加载超过191个用户控件。是否运行Process Explorer或Windows任务管理器查看GDI对象、

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

我已经读了很多关于解决异常的文章。我使用了GC.Collect-inside和after-for循环来释放内存,因为每次执行循环时,内存消耗都会增加。我也尝试过。在循环之前和之后进行处理,但都不起作用

我的代码是用C写的


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

是否运行Process Explorer或Windows任务管理器查看GDI对象、句柄、线程和用户对象?如果没有,请选择要查看的列任务管理器选择查看->选择列。。。然后运行你的应用程序,查看该应用程序的那些列,看看其中是否有一列正在增长

应用程序的windows句柄限制为10000个句柄。可能是您认为已经清理了UI组件,但尚未处理

可能您的程序创建的句柄太多。您需要使用内存探查器查找内存泄漏。我使用ANTS内存分析器。此外,如果要在窗体关闭之前将控件从窗体中删除,请确保正在对控件调用Dispose方法,否则控件将无法进行Dispose。您还必须确保没有向控件注册任何事件