社区
C#
帖子详情
C#里时关闭子窗口时base.Dispose(disposing)报错
tengjige
2010-05-28 09:30:16
C#里时关闭子窗口时base.Dispose(disposing)报错:
Value Dispose() cannot be called while doing CreateHandle().
求各高手帮助解决!!!!
...全文
1315
6
打赏
收藏
C#里时关闭子窗口时base.Dispose(disposing)报错
C#里时关闭子窗口时base.Dispose(disposing)报错: Value Dispose() cannot be called while doing CreateHandle(). 求各高手帮助解决!!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tengjige
2010-05-28
打赏
举报
回复
谢了,给分。
tengjige
2010-05-28
打赏
举报
回复
谢谢,我先试一下
skep99
2010-05-28
打赏
举报
回复
[Quote=引用 3 楼 tengjige 的回复:]
我是在子窗口的_FormClosing里Dispose的
在显示前怎么做?我是点击一个BUTTON显示的
private void button1_Click_1(object sender, EventArgs e)
{
Program.buttonid = 1;
Form2 form2 = new Form2();
form2.ShowDialog(this);
……
[/Quote]
在FormClosing里还没执行完,Dispose不掉的.
不用Dispose就可以了,gc帮你回收掉
tengjige
2010-05-28
打赏
举报
回复
我是在子窗口的_FormClosing里Dispose的
在显示前怎么做?我是点击一个BUTTON显示的
private void button1_Click_1(object sender, EventArgs e)
{
Program.buttonid = 1;
Form2 form2 = new Form2();
form2.ShowDialog(this);
}
只在此山中
2010-05-28
打赏
举报
回复
看:
OnLoad或者Form的Constructor里面调用Close或者Dispose是不安全的。
更好的做法是,在窗口显示以前,当发现需要关闭窗口的时候,throw一个特殊的Exception,然后在创建窗口的代码忠try...catch...
skep99
2010-05-28
打赏
举报
回复
楼主在哪里调用关闭的的子窗口?外面try catch下,贴代码
C#
方法设计最佳实践:粒度、异常、访问性与重构指南
方法是软件工程中最基础的可执行单元,其设计质量直接决定代码可维护性、线程安全性与团队协作效率。从认知科学视角看,30行限制本质是对人类短期记忆负荷的工程约束;异常处理需依循上下文契约——静态构造函数必须沉默以保障类型可用性,析构函数严禁抛出异常,属性Getter应杜绝副作用。
C#
中方法签名设计需兼顾PascalCase命名规范与动词+名词语义表达,访问修饰符实为模块演进的契约防火墙。结合virtual/override语义、
Dis
pose
模式协同及静态/实例方法选型原则,本文系统梳理高危陷阱(如构造函数调用
C#
析构器不是资源释放方案:99%场景应禁用
析构器(Destructor)是
C#
中常被误用的语法特性,其本质是编译器自动生成Object.Finalize重写,绑定于GC终结队列机制。它不提供确定性调用
时
机,无法保证资源及
时
释放,反而引发代际提升、Finalizer线程阻塞和GC风暴等严重性能问题。相较之下,I
Dis
posable接口配合usi
ng
语句构成.NET官方推荐的确定性资源管理范式,具备可控、高效、可预测的技术价值。在文件句柄、数据库连接、网络资源等典型应用场景中,应优先采用
Dis
pose
模式,仅将析构器视为极端兜底手段。本文聚焦
C#
资源管
深入理解
C#
Stream设计契约与生产实践
Stream是.NET中统一抽象字节序列的核心基类,其本质并非简单管道,而是承载隐式状态、定义严格I/O契约的抽象机制。它通过CanRead/CanSeek等虚拟属性实现渐进式能力声明,以P
osi
tion与Seek的共生关系体现随机访问语义,而Le
ng
th、Flush等行为则因底层载体(文件/内存/网络)差异产生显著性能与异常特征。理解Stream的抽象基类定位、状态管理逻辑及异步演进(如ValueTask、PipeReader),对规避P
osi
tion错乱、Le
ng
th异常、Flush误用等高频线上问题至
深入理解
C#
foreach与IEnumerable接口契约机制
IEnumerable是.NET中定义‘可枚举性’的基础接口,其核心并非数据容器,而是一套延迟执行、按需获取的协议契约;它通过GetEnumerator→MoveNext→Current→
Dis
pose
四步协作机制,支撑foreach语法的底层运行逻辑,并深刻影响资源管理、内存分配与异步流处理;理解该机制对避免N+1查询、线程池耗尽、资源泄漏等生产问题至关重要;本文结合yield return状态机、I
Dis
posable生命周期及IAsyncEnumerable演进,系统解析foreach在编译期约定、运
C#
上机题背后的工程化思维:从语法正确到生产就绪
C#
编程不仅是掌握语法和API,更是构建可维护、可扩展、高鲁棒性系统的工程实践。其核心在于理解类型系统设计意图、LINQ的数据流本质、异常的分层治理策略、异步的资源调度逻辑,以及不可变性与内存安全等底层契约。这些能力共同支撑起防御性编程、领域建模、依赖解耦与结构化可观测性等现代软件工程关键环节。尤其在教学与实训场景中,一道看似简单的上机题,实则是检验开发者是否具备业务语义理解力、变化点识别力与故障预判力的试金石。本文聚焦
C#
工程化落地中的七层进阶认知,覆盖从`var`/`record`的语义权衡到`Span
C#
111,129
社区成员
642,540
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章