文档章节

c# 执行 CreateHandle() 时无法调用 Dispose()

idllbi
 idllbi
发布于 2017/05/25 13:28
字数 304
阅读 35
收藏 0

在多线程C#开发中,遇到错误 执行 CreateHandle() 时无法调用值 Dispose()。,这个错误是在关闭窗体的时候出来的。 原因是因为窗体还存在CreateHandle()事件,所以还不能回收垃圾。 当前窗体的句柄Handle还没有创建完成,所以不能直接进行关闭操作。

解决方法: A:

     protected override void OnVisibleChanged(EventArgs e)
{
     base.OnVisibleChanged(e);
     if ( !IsHandleCreated)
     {
          this.Close();
      }
}

也可以重写 OnShown 或者在 Shown 事件响应中写。

B.IsBackground对线程的重要作用 要点:

1、当在主线程中创建了一个线程,那么该线程的IsBackground默认是设置为FALSE的。
2、当主线程退出的时候,IsBackground=FALSE的线程还会继续执行下去,直到线程执行结束。
3、只有IsBackground=TRUE的线程才会随着主线程的退出而退出。
4、当初始化一个线程,把Thread.IsBackground=true的时候,指示该线程为后台线程。后台线程将会随着主线程的退出而退出。
5、原理:只要所有前台线程都终止后,CLR就会对每一个活在的后台线程调用Abort()来彻底终止应用程序。

© 著作权归作者所有

共有 人打赏支持
idllbi
粉丝 0
博文 5
码字总数 1378
作品 0
深圳
私信 提问
C#中对象的销毁有三种方式Finalize,Dispose,GC。

1、Finalize方法(C#中是析构函数,以下称析构函数)是用于释放非托管资源的,而托管资源会由GC自动回收。所以,我们也可以这样来区分托管和非托管资源。所有会由GC自动回收的资源,就是托管...

浩爷
2015/10/19
884
0
C#垃圾回收Finalize 和Dispose的理解

C# 中的析构函数实际上是重写了 System.Object 中的虚方法 Finalize 三种最常的方法如下:   1. 析构函数;(由GC调用,不确定什么时候会调用)   2. 继承IDisposable接口,实现Dispo...

格式化记忆
2016/02/25
76
0
Visual C# .NET 2003 语言的改变

Visual C# .NET 2003 语言的改变 Prashant Sridharan Microsoft Corporation 2002年12月30日 适用于: Microsoft Visual Studio® C# 2003 摘要:为了与欧洲计算机制造商协会 (ECMA) 的 C# 规...

晨曦之光
2012/03/09
42
0
C#资源回收和IDisposable接口的使用

源码地址:https://github.com/hiramtan/HiFrameworkunity/blob/master/unity/Assets/HiFramework/Extensions/ObjectBase.cs 在说资源回收之前先要说明托管资源和非托管资源。 1.托管资源由C...

海贝Hibey
08/16
0
0
重新学.Net[七]——垃圾回收和资源管理[下]

在前面说了GC的工作原理。需要注意的是,GC只能回收托管堆中的资源。其他一些非托管资源,比如文件资源,缓冲区,互斥体之类,无法通过GC自动回收。必须通过开发人员自己编程实现对其的回收(...

余二五
2017/11/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

0029-如何实现CDH元数据库MySQL的主备

1.文档编写目的 MySQL数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,实现数据库的扩展。多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负...

Hadoop实操
7分钟前
1
0
阿里如何做到百万量级硬件故障自愈?

摘要: 随着阿里大数据产品业务的增长,服务器数量不断增多,IT运维压力也成比例增大。各种软、硬件故障而造成的业务中断,成为稳定性影响的重要因素之一。本文详细解读阿里如何实现硬件故障...

阿里云官方博客
9分钟前
1
0
配置resttemplate

<bean id="httpClientBuilder" class="org.apache.http.impl.client.HttpClientBuilder"factory-method="create"><property name="connectionManager"><bean class="org.apache.ht......

1713716445
12分钟前
0
0
Intersection of Two Linked Lists(leetcode160)

Write a program to find the node at which the intersection of two singly linked lists begins. For example, the following two linked lists: A: a1 → a2 ......

woshixin
17分钟前
1
0
Jrebel最新激活破解方式(持续更新)

https://blog.csdn.net/xingbaozhen1210/article/details/81093041

glen_xu
18分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部