场景:在窗口中有个TabControl,左侧有TreeView
选择TreeView中结点,Tabcontrol.Tabpages.Clear(); 然后新增tabpages
问题:每次新增tabpages,会增加300~400个user objects(windows任务管理器中可以查看)。直到windows上限10000个。会弹出如题所示错误:
Win32Exception 创建窗口句柄时出错
解决思路:
改变界面格局,新建一个用户控件,加入一层封装。把每次的动态生成放入控件。
1 解决每次生成动态控件都会新增大量句柄。
2 前台UI看起来也不像之前那么卡了。
场景:在窗口中有个TabControl,左侧有TreeView选择TreeView中结点,Tabcontrol.Tabpages.Clear(); 然后新增tabpages问题:每次新增tabpages,会增加300~400个user objects(windows任务管理器中可以查看)。直到windows上限10000个。会弹出如题所示错误:Win32Exception 创建窗口句柄
Winform窗体
win32
Exception
:“
创建
窗口
句柄
时
出错
”
类似如上图中的
win32
创建
窗口
句柄
出错
,根据实际解决问题的推测,是我们的GC自动回收机制出现了问题,有些是第三方控件本身的具有的问题,有些是控件的生成多次重复使用导致的。
一般解决方案,为在抛出异常的第三方控件或winform自身控件或者自定义控件使用完毕后,手动调用控件的Dispose()方法,主动释放即可。
关于释放...
窗体在InitializeComponent的
时
候如果
创建
不成功,尝试在Form的子类中重写一下CreateHandle,如果
创建
不成功,通过RecreateHandle,一般都会成功的。如下:
protected override void CreateHandle()
if (!IsHandleCreated)
我总相信只要对象离开其作用域并没有被引用到,dotnet会帮我们回收他,当然一般还会告诉我们IO操作(网络也可视为IO操作的一类)需要主动关闭。而我一直忽略了控件也是需要这么做的。
工作让我接触到了一个很古怪的问题,客户反馈说每天有一台机器到了11点就会
出错
。观察并细听用者的反应,我认为与使用次数有关。界面动态不断地加载不定数量的用户控件。起初怀疑是不是反射在某些应用下会引起问题,于是写了个项目...
今天用MDI窗体,在一个子窗体A中,通过主窗体的下拉菜单调用另外一个子窗体B,出现错误“
创建
窗口
句柄
时
出错
”,原因不清楚;似乎与该子窗体A用了DotNetBar控件的DataGridViewX控件有关,我换成C#自带的DataGridView控件,就没在出现该问题。
有意思的地方在于:如果DataGridViewX控件里边没有数据,则不会出现问题;如果有数据,则出现。而且如果是进入窗体即查询出来...
今天遇到一个问题,见上图,控件是自己写的,不是标准的控件 在执行
Controls
.Add(control),出现上述问题。
问题的具体描述:根据条件设置移除和加入不同的控件,当前控件不满足条件
时
,将控件移除,然后加入新的控件。
代码如下:
if (this.Panel.
Controls
.Contains(this.R_Parameter))
this.Panel.
Controls
.Remove(this.R_Para...
1.
窗口
类注册失败。请确保
窗口
类已正确注册并且注册信息与
创建
窗口
时
提供的信息匹配。
2. 系统资源不足。在
创建
窗口
时
,操作系统需要分配一些资源,如内存和
句柄
等。如果系统资源不足,则可能会导致
窗口
句柄
创建
失败。
3.
窗口
创建
参数错误。请确保
创建
窗口
时
提供的参数正确无误。
你可以尝试以下解决方法:
1. 检查代码中
窗口
类的注册和
创建
窗口
的参数是否正确。
2. 确保系统资源充足,如关闭一些不必要的程序释放资源。
如果以上方法仍然无法解决问题,建议使用调试工具进行调试,以确定具体原因。