C#中用dispose()关闭了对象,为什么还可以访问?怎么才能真正销毁对象?

C#中用dispose()关闭了对象,为什么还可以访问?怎么才能真正销毁对象?

0

2个回答

dispose()不会销毁对象,它只是一个普通的方法。C#是自动垃圾回收的,你只要把对象引用指向null,就可以了。

2

dispose只是释放资源,并不是销毁对象。你将其置为null,会有clr的垃圾回收器自动回收的。

1
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C#中对象的销毁有三种方式Finalize,Dispose,GC。请大虾们描述三种方式的区别啊?/java中的析构函数
MSDN建议按照下面的模式实现IDisposable接口: 1 public class Foo: IDisposable 2 { 3 public void Dispose() 4 { 5 Dispose(true); 6 GC.SuppressFinalize(this); 7 } 8 9 protected virtual v
C#中关闭子窗口而不释放子窗口对象的方法
在线扫描相机的调试过程中,需要开辟调试界面来进行位置的配置。调试结束后,一种常用的方式是将调试参数保存并在下次启动时加载。另一种简单方式是直接使用该参数运行程序。因此,在后一种情况下,需要实现的功能是:即使关闭调试窗口,其窗口对象也不释放。除非其主窗口关闭,才销毁其调试窗口的对象。
C#如何进行对象的销毁和资源的释放?
 1。对象的销毁不需要程序员来关心,垃圾回收机制会负责监控对象的使用状态,对象如果不被使用,则垃圾回收会在一定的内存使用情况下(一般是CLR认为内存不足,需要进行内存释放的时候),启动回收机制。 2。对象在销毁之前,需要进行不同的操作(因为有可能程序员希望在销毁之前释放文件句柄或者数据库连接),所以可以适用对象的Finalize方法来释放这些资源(但在C#中,不允许这样操作,因此这句话为废话
对象生命周期:如何创建对象和销毁对象(Visual Basic.Net)
     使用 New 关键字创建类的实例(即对象)。 通常,初始化任务必须在使用之前在新对象上执行。 常见的初始化任务包括打开文件、连接到数据库以及读取注册表项的值等等。Visual Basic通过构造函数(允许超初始化的特殊方法)来控制新对象的初始化。对象离开作用域之后,由公共语言运行时 (CLR) 进行释放。 Visual Basic 通过析构函数来控制使用程序调用的系统资源的释放。 同时,...
C++对象被delete之后,其对象指针还能干些啥
先看一段代码,想象它的结果是怎样的?
C# 资源释放及dispose、close方法
需要明确一下C#程序(或者说.NET)中的资源。简单的说来,C#中的每一个类型都代表一种资源,而资源又分为两类: 托管资源:由CLR管理分配和释放的资源,即由CLR里new出来的对象; 非托管资源:不受CLR管理的对象,windows内核对象,如文件、数据库连接、套接字、COM对象等; 毫无例外地,如果我们的类型使用到了非托管资源,或者需要显式释放的托管资源,那么,就需要让类型继
写在UserControl销毁之时
近来使用C#编程,需要在主窗体关闭之前将现在的地图中的图层的某一状态置为初始状态,而此方法又需要写在UserControl自定义控件类之中。 但是在继承UserControl类的事件里,却找不到合适的事件对此方法进行触发。UserControl并没有定义FormClosing事件。 想到两种办法: 1. 重载自定义控件类的Dispose()方法;(网上刚看到一种解决办法,说是重载IDis
echarts常用方法初始化和销毁
1、setOption(option,{boolean = true}) 1)第一个参数option,配置图标实例可配置选项 2)第二个表示是否合并option,默认false,多次调用时option选项是默认合并的,可设置为true阻止与上次option的合并 2.on(eventName,function) 事件绑定 3.un(eventName,function) 解除某个事件的绑定...
端口重叠情况下Socket的创建与释放
就一个Socket完成传输后重建的问题,被坑了整整两天。 在这里简单记录 一下。 为了完成NET穿透,在客户端我们用 TCPClient 使用随机端口号,创建一个到服务器的连接,然后在相同的端口上,再新建一个Socket,并在这个Socket上打开侦听,等待网络上,特别是公网上的连接。 公网上的服务器,为了支持浏览器访问,是一个long-pulling类型的信息交换服务,同时支
WPF UserControl销毁前处理
若需要在销毁UserControl前执行操作,不能指望使用Unloaded方法,你需要在UserControl的构造函数中增加类似如下代码: public UCCaptureQuery() { InitializeComponent(); Dispatcher.ShutdownStarted += (object sender,...
验证使用内部类对象时外部类对象是否被回收
使用 Outer.Inner inner = new Outer().new  Inner()创建对象时,Inner类中没有使用Outer中的属性和方法时外部类对象是否会被jvm的垃圾回收机制回收(可达性分析中没有人连接着外部类对象,但有人连接着内部类对象) public class TestDemo1 { private int age = 5; public static void m...
测试对象销毁后指针是否还可以使用
// 04-测试对象销毁后指针是否还可以使用 // // Created by wanghy on 15/8/13. // // //为了直观,直接将.m和.h文件写在main.m中。 #import //定义 person类 包含 姓名,年龄和性别 @interface person : NSObject { @public NSStri
Java中包含继承关系时对象的创建与销毁顺序详解(附源码)
前言        通过组合和继承方法来创建新类时,永远不必担心对象的清理问题,子对象通常都会留给垃圾回收器进行处理。如果确实遇到清理的问题,那么必须用心为新类创建dispose()方法(在这里我选用此名称,读者可以提出更好的)。并且由于继承的缘故,如果我们有其他作为垃圾回收一部分的特殊清理动作,就必须在导出类中覆盖dispose()方法。当覆盖被继承类的dispose()方法时,务必记
C# Socket的安全关闭
网络编程中,socket的安全关闭方法 /// /// Close the socket safely. /// /// The socket. public static void SafeClose(this Socket socket) { if (socket ==
单例对象释放问题
/*class A{};A a;单例模式就是全局只有一个类A产生的对象不允许产生多个对象。1.static成员变量实现了同类对象间信息共享2.static成员类外存储,求类大小,并不包含在内3.static成员是命名空间属于累的全局变量,存储在data区4.static成员只能类外初始化5.可以通过类名访问(无对象生成时亦可),也可以通过对象访问*/# include <iostream&g...
释放类中的静态对象
假设写一个单例类,懒汉式,需要新建一个static的对象,而且需要使用结束后释放这个静态对象,则可以使用嵌套类,在嵌套类中重写嵌套类的析构函数来完成这个工作 class MySingleton { public: static MySingleton* getInstance() { //return mySingleton; if (NULL == mySing...
javascript中对象的销毁
ECMAScript有无用存储单元收集程序,意味着不必专门销毁对象来释放内存。当再没有对对象的引用时,该对象就被废除了。 运行无用存储单元收集程序时,所有废除的对象都会被销毁。每当函数执行完它的代码,无用存储单元收集程序都会运行,释放所有的局部变量,还有在一些其它不 可预知的情况下,无用存储单元收集程序也会运行。    把对象的所有引用都设置为null,可以强制性的废除对象。例如: 
关于DI容器UnityContainer的Dispose方法释放资源的一点理解
当调用IUnityContainer.Dispose()方法的时候,它会释放所有子容器(也就是采用CreateChildContainer创建出来的容器)和注册为ContainerControlledLifetimeManager的单例对象。下面这个例子能说明问题: IUnit
Python 对象特殊方法:(一)对象创建与销毁
python 特殊方法 __new__ __init__ __del__
C#中显式销毁对象
【转载】C#中显式销毁对象 对于非托管代码,显示地销毁对象是非常重要的。对于占用系统资源的托管代码,及时释放资源也非常重要,我们以往编写代码的时候,不是很注意整个系统中对象的存在与管理,造成了很大的系统资源浪费。因此,.NET平台中对象的销毁知识有必要进行回顾和总结。 一 销毁机制     C#提供了垃圾回收器,可以不显示的销毁对象。但是如果要控制非托管对象,用完后显示地释放对象还是必须的。
C# 给对象赋null值会释放内存吗?
比如A a=new A(); a=null; 这时候a所占用的内存会释放掉吗?还是只是将a的指针改变为null,而new A();产生的数据仍在内存中? 另外请问string a="";和string a=string.Empty;是一样的吗?   不一定,这个涉及到GC 垃圾回收机制,具体的回收是由.NET运行时决定的,但是只有对象不再执行任何引用时才会释放,也就是说你的a=null;
关于线程对象没有及时销毁
public class ThreadTT extends Thread{ public int i = 0 ; public ThreadTT(int iu){ i =iu ; } /** * @param args */ public static void main(String[] args) {
Dispose、Close、=null三者之间的区别
 上午想做个简单的单件设计模式(Singleton)的小例子,结果出现了一些意想不到的问题。我的本意是建立两个窗体类Form1和Form2,在Form2上放置一个名为Button1的按钮,单击Button1会调出Form1的窗口事例,并且保证再单击Button1的时候,不会再弹出第二个Form1实例,除非关掉Form1实例并重新单击Button1,总之,保证只能弹出一个Form1实例(当然不是
关于dispose 方法的资源释放
当在程序上实现dispose 方法时,当前对象所占用的资源会被释放,当前对象便不能再被使用,但在内存中还并不会被及时的释放,要待到下次垃圾回收的时候,内存才能得到释放。
echarts 常用方法 初始化和销毁
纵观ECharts图表实例化的API,主要有一下几个相关的实例化方法:1、setOption(Object option,{boolean = true} notMerge)参数:1)、Object类型的参数 option,表示图表数据结构 ,形如:  1.var option  = {2.                title: {3.                    text: "我...
Socket的创建、销毁、使用的注意事项
接触过网络编程的人都知道Socket,但是,在Socket中,有两个很有用的方法,我们是否真正的使用到了呢? 1setSoLinger(boolean, int)2setSoTimeout(int) 1方法是设定Servlet关闭的延迟时间,做一些资源释放,收尾的工作。 2设置处理流的等待时间,如果超过参数值,则抛出异常,防止无限等待,但是,我们在创建Socket时,还
ADO.net应该手动释放资源。
本来对于C#的GC有诸多争议,像我这样从伪C++程序员转过来的,自然对于靠第三方回收堆上对象的行为,感到一种恐惧和无力。但是,既然Java和C#都有GC,总还认为是可靠的,但是,谁知道这个可靠的GC缺出问题了。 案例:同事做的一个操作数据库的B/S小程序出问题了,前台asp.net,数据库SQL2k,操作数据库用了ADO.net,操作几次之后,页面报错,Debug时发现asp.net报错的大意为
WebBrowser隐藏后自动销毁的BUG以及解决办法
程序主界面上有个浏览器控件,里面是google地图,需要点击一个按钮后隐藏浏览器控件,显示其他界面,而且要做到还可以切换到原来的地图上。 一开始只是在浏览器上覆盖了一个图片控件,没有隐藏浏览器,后来发现这样不行,鼠标移动到原来浏览器控件的位置上时, 会变成“小抓手”(google地图上移动地图的抓手)。 后来切换到其他界面时用ShowWindow将浏览器隐藏,但是出问题了,切换回来时浏览器就
WPF WPF中解决内存泄露的几点提示与解决方法
http://www.cnblogs.com/LastPropose/archive/2011/08/01/2124359.html 一直以来用WPF做一个项目,但是开发中途发现内存开销太大,用ANTS Memory Profiler分析时,发现在来回点几次载入页面的操作中,使得非托管内存部分开销从起始的43.59M一直到150M,而托管部分的开销也一直持高不下,即每次申请的内存在结束后不能完全
threejs移除对象
this.removeCube = function(){ var allChildren = scene.children; var lastObject = allChildren[allChildren.length-1]; if(lastObject instanceof THREE.Mesh){ ...
单例模式及销毁
通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例。 单例模式的要点有三个:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。 从具体实现角度来说:一是单例模式的类只提供私有的构造函数,二是类定义中含有一个该类的静态私有对象,三是该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象。 #include using na
有关【线程】销毁的理解
建议:当Activity或者fragment退出的时候,把线程关闭,如果依然想开线程可以调用IntentService(里面运用handlerThread)。 如果不关闭线程,线程会继续开着,那要看这个线程里面有没有持有跟这个Activity相关的实例 ,如果有activity不会被销毁 只是不可见而已 ,造成【内存泄露问题】 因为线程只有所有任务执行完毕才会关闭。。。。。。。 如果要
ApplicationContext和Bean的初始化和销毁
本节来学习ApplicationContext和Bean的初始化和销毁首先看一下ApplicationContext容器的初始化和销毁关闭过程。ApplicationContext启动的过程是在AbstractApplicationContext实现的。在使用应用上下文时需要做一些准备工作,这些准备工作在prepareBeanFactory方法中实现。这个方法为容器配置了ClassLoader、P...
Qt窗体关闭时,如何自动销毁窗体类对象
Qt窗体关闭时,如何自动销毁窗体类对象   2013-01-10 17:11:03|  分类: Qt |  标签:qt  关闭窗口  删除窗口  wa_deleteonclose  |举报|字号 订阅 QMainWindow* ImgWindow1; ImgWindow1 = new QMainWindow(this); ImgWindow1->show(); c
dispose()与close()的区别 及pooling连接池相关
Dispose了,就必须再Create一次 而Close()后,还可以再Open(), 而Dispose后,对象都不存在了,就不能Open()了 Dispose是对于对象自身而言的,Close是对于连接数据库而言的 其它都是误导... 以下是相关知识点: 1.SqlConnection conn = new SqlConnection(strConnection)时,如果原来的连接已
java启动如何保证不被销毁
例如以下两种方式: new CountDownLatch(1).await(); System.in.read(); - - - 其实要保证不被销毁很简单,涉及到线程方面的知识,如果你只有一个主线程,当你启动运行完之后jvm就销毁了,但是如果有个子线程在运行,那么jvm就不会被销毁,然后就长存 ...
c# Datatable释放资源
1、创立表格及时的导出数据可以发现程序中的失误,但是表格创立不当,会引起程序出现bug. 2、在大量的调试中,笔者发现,表格在应用过程中,如果可以及时的进行资源的释放,则能够将 bug问题解决。 3、DataTable(dt)以及DataSet(ds)表分别执行dt = null/ds.Dispose();dt = null;
Spring 自定义对象初始化及销毁
– Start 有些对象实例化时,我们需要打开某些资源,而在销毁对象时将这些资源关闭,Spring 允许我们自定义初始化和销毁方法,下面是一个简单的例子。package shangbo.spring.example9;public class OutPutService { // 初始化方法 public void init() { System.out.printl
Java对象的销毁
Java对象的销毁 每个对象都有生命周期,当对象的生命周期结束时,分配给对象的内存地址将会被回收。 何种对象会被java虚拟机视为垃圾: (1)对象引用超过其作用范围,这个对象被视为垃圾 { Example e = new Example(); } 在大括号之外的范围,就被视为超过e的作用范围。 (2)将对象赋值为null { Example e = new Example()
JDialog一段时间后自动销毁(Timer类实现)
最近做个小项目,需要用到一个信息面板显示,信息轮换,一段时间后自动销毁这个面板。采用了JDialog显示 销毁的时候尝试了线程,dispose等方法均没有实现,还有说将JDialog的引用设置成null更不可能准备实现这种效果,jvm的垃圾回收机制。 后来才了解使用timer类能很好解决: package com.liu.test; import java.awt.*; import ja
文章热词 设计制作学习 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 怎么才能学好python java班级与对象

相似问题

8
javascript中数组里对象怎么去重
1
vb 6.0中文,设置启动的模块可以作为事件的对象启动么?
3
c++怎么将一个类的对象数组从文件中读取出出来?
4
点击某行的某个按钮时如何ajax提交具体那一行索引对象的属性值
4
java什么时候给类变量分配内存,注意是类变量不是对象成员变量!!!
4
Java克隆对象失败,里面的对象属性没有克隆成功
1
斗地主的抽牌算法(不用排大小) //注:牌是一个类,玩家类(三个玩家对象)
2
怎么使用vb编程实现用activx实现控件在代码中调用,作为启动对象?
2
怎么在启动对象中通过代码直接引用控件而不现启动界面的方法是什么?
1
中文版vb编程使用summain过程作为启动对象,怎么使用工程部件里的事件调用?
1
怎么在vb6.0中实现仅用标准模块在启动的时候同时显示两个界面?
1
vb6.0怎么实现多个启动窗体都成为多个启动对象,而不是只能下拉选择一个?
2
如果对应的窗体和过程都执行,那么怎么让启动对象的执行比窗体晚,先执行窗体得到参量怎么实现?
2
jersey资源response怎样返回JSon而不是对象
1
C#中对枚举值进行显式转换是否有性能开销?
3
C# 如何根据字符串调用类及类的内容
5
在MFC中怎么得到对话框类的对象?
1
C#调用CodeSoft打印条码 ,未将对象引用设置到对象的实例怎么解决?
1
加急:NullReferenceException: 未将对象引用设置到对象的实例
1
C# typeof实例化对象怎么赋初始值