文档章节

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

idllbi
 idllbi
发布于 2017/05/25 13:28
字数 304
阅读 25
收藏 0
点赞 0
评论 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
博文 4
码字总数 409
作品 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#垃圾回收Finalize 和Dispose的理解

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

格式化记忆
2016/02/25
76
0
C#中对象的销毁有三种方式Finalize,Dispose,GC。

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

浩爷
2015/10/19
884
0
重新学.Net[七]——垃圾回收和资源管理[下]

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

余二五
2017/11/14
0
0
C#精髓【月儿原创】第一讲 使用垃圾回收器

说明:准备出一个系列,所谓精髓讲C#语言要点。这个系列没有先后顺序,不过尽量做到精。可能会不断增删整理,本系列最原始出处是csdn博客,谢谢关注。 C#精髓 第一讲 使用垃圾回收器 作者:清...

晨曦之光
2012/03/09
46
0
浅谈C#托管程序中的资源释放问题

便于对文章的开展,需要先明确两个概念。 第一个就是很多人用.Net写程序,会谈到托管这个概念。那么.Net所指的资源托管到底是什么意思,是相对于所有资源,还是只限于某一方面资源?很多人对...

技术小胖子
2017/11/09
0
0
winform开发小技巧

技巧1,合理使用控件的Tag属性 几乎所有winform控件有都名为object类型的Tag属性,此属性多数情况下用来承载完整的数据源,相当于WEBFORM页面中hidden控件的作用,举个简单的例子 C# code textBo...

长平狐
2013/03/28
56
0
.Net确定销毁

.Net中,垃圾回收器负责回收你创建的引用类型的对象,但是回收时间并不能准确估计出来,所以这称之为非确定销毁。值类型自动释放,所以不在本文讨论之中。 但是有些稀缺资源,比如文件句柄、...

长平狐
2012/08/28
50
0
关于C#3.0和.net一些问题的理解

1.string 和 System.String string和System.String 是完全相同的 写下面的代码,编译之后,使用ildasm.exe查看生成的IL代码,可以发现是完全一样的 class Program 2.匿名类型 Var 匿名类型在...

技术小美
2017/11/12
0
0
从C#垃圾回收(GC)机制中挖掘性能优化方案

  GC,Garbage Collect,中文意思就是垃圾回收,指的是系统中的内存的分配和回收管理。其对系统性能的影响是不可小觑的。今天就来说一下关于GC优化的东西,这里并不着重说概念和理论,主要...

雲霏霏
2014/09/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Nginx upstream 负载均衡

Nginx upstream 负载均衡 了了情空 关注 2016.05.31 16:16* 字数 612 阅读 537评论 1喜欢 0 上周五同事跟我提一个需求,大概描述是酱紫:“我们现在终端都在访问同一台服务器,如果流量过大造...

linjin200
5分钟前
0
0
Dubbo 源码解读——自定义 Classloader 之 ExtensionLoader

众所周知,Dubbo 是阿里巴巴公司自主研发开源的一个高性能的服务框架(现已捐献给 Apache 基金会组织),应用之间可以通过 RPC 的方式来互相调用并返回结果。主要基于 Java 语言开发,它提供...

Ryan-瑞恩
13分钟前
0
0
Sonar Maven/IDEA集成(未完待续)

前言:在上一篇(SonarQube安装步骤)的基础上,我们来集成maven/IDEA 1.首先是集成maven(maven的安装配置就不多说了) 找到maven安装目录下-conf文件夹-setting.xml文件 然后添加以下配置信...

张艺兴女朋友
13分钟前
0
0
JVM的内存区域划分

JVM的内存区域划分   学过C语言的朋友都知道C编译器在划分内存区域的时候经常将管理的区域划分为数据段和代码段,数据段包括堆、栈以及静态数据区。那么在Java语言当中,内存又是如何划分的...

yzbty23
13分钟前
0
0
mysql 日期查询

MYSQL查询今天、昨天、7天前、30天、本月数据今天:SELECT * FROM 表名 WHERE TO_DAYS( 时间字段名) = TO_DAYS(NOW());昨天:SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) ...

evil_01
20分钟前
0
0
RuntimeError - [Xcodeproj] Unknown object version

在创建新工程,使用cocoaPods下载第三方库时,报如下的错: 报这个错,是因为xcode工程版本Deployment Target 和工程project format不匹配造成的,因此需要调整这两个配置一致,处理这个问题...

奋斗的青春年华
34分钟前
0
0
java中modbus协议连接

modbus在java中的使用,首先maven的pom中引入modbus4j包 <dependency><groupId>com.infiniteautomation</groupId> <artifactId>modbus4j</artifactId> <version>3.0.3......

江湖鱼大虾
36分钟前
0
0
Java单例的常见形式

Java单例的常见形式 本文目的:总结Java中的单例模式 本文定位:学习笔记 学习过程记录,加深理解,便于回顾。也希望能给学习的同学一些灵感 一、非延迟加载单例类 public class Singleton {...

lichuangnk
37分钟前
1
0
微信小程序接口报错47001的解决方法

使用微信小程序码的生成接口,发现死活都报47001错误。 有人提到是urlencode的问题,不能使用urlencode。 修改了代码,可以了。代码贴出来: import urllib.requestimport urllib.parse...

乐_然
41分钟前
0
0
6、Git安装

1、下载地址: https://git-scm.com/ 2、下载完成后安装,安装路径自己选择,其他的选项参照下图: 其他的一步一步往下即可,最后Finish完成安装; 3、配置github的ssh密钥: (1)打开Git Bas...

丑陋的皮囊
44分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部