备注:此文的部分观点有误,之所以仍旧保留本文,是需要在后期给出一个勘误版。正确的版本在这里“C#中标准Dispose模式的实现”一:什么是资源在开始本文前,需要一些准备知识。首先要提出“什么是资源”。在CLR出来之后,Windows系统资源开始分为“非托管资源”和“托管资源”。 非托管资源是指:所有...
MemoryStream 是一个特例,MemoryStream中没有任何非托管资源,所以它的Dispose不调用也没关系。托管资源.Net会自动回收MemoryStream继承自Stream类。内存流的好处是指针可以晃来晃去,也就是支CanSeek,Position,Seek()。任意读其中一段。在...
分类:
其他好文 时间:
2015-05-31 21:19:07
阅读次数:
136
老生常谈的问题了,MSDN也有非常详细的说明但看起来不是很系统。也曾经做过分析,但没有总结下来又忘了,这次整理一下MSDN和网上搜集的一些资料,以备不时只需。下面是MSDN对这两个函数的建议使用方法 1 // Design pattern for a base class. 2 pu...
分类:
其他好文 时间:
2015-05-26 09:05:58
阅读次数:
140
1 内存分配常见函数GetMem和FreeMem、GetMemory和FreeMemory、New和Dispose、StrAlloc和StrDispose、AllocMem、SysGetMem和SysFreeMem。2 GetMem和FreeMem、GetMemory和FreeMemory由于DEL...
分类:
其他好文 时间:
2015-05-17 10:44:36
阅读次数:
96
释放类所使用的未托管资源的两种方式: 1.利用运行库强制执行的析构函数,但析构函数的执行是不确定的,而且,由于垃圾收集器的工作方式,它会给运行库增加不可接受的系统开销。 2.IDisposable接口提供了一种机制,允许类的用户控制释放资源的时间,但需要确保执行Dispose()。一般情...
1、使用性能测试工具dotTrace 3.0,它能够计算出你程序中那些代码占用内存较多2、强制垃圾回收3、多dispose,close4、用timer,每几秒钟调用:SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle, -1, -1...
前面的代示例展示了如果调用一个类型的Dispose或Close方法。如果决定显式的调用这两个方法之一,强烈建议吧他们放在一个异常处理finally块中。这样可以保证清理代码得到执行,因此,前代码示例可以修改成下面这种更好的形式: static void Main(string[] args) { B...
假设我们需要点击主窗体FMMain中的某一个按钮时打开子窗体FMChild并将某一个值传给子窗体FMChild,一般情况下,我们点击按钮显示子窗体FMChild的代码为:
FMChild fmChild = new FMChild();
fmChild.ShowDialog();
fmChild.Dispose();
如果我们需要将主窗体FMM...
Connection:主要是开启程序和数据库之间的连接。没有利用连接对象将数据库打开,是无法从数据库中取得数据的。Close和Dispose的区别,Close以后还可以Open,Dispose以后则不能再用。Command:主要可以用来对数据库发出一些指令,例如可以对数据库下达查询、新增、修改、删除...
分类:
Web程序 时间:
2015-04-08 21:16:03
阅读次数:
153
知道类型如何实现dispose模式之后,接下来看一下开发人员怎样使用提供了dispose模式的类型。这里不再讨论前面的SafeHandle类,而是讨论更常用的FileStream类。可以利用FileStream打开一个文件,从文件中读取字节,向文件中写入字节,并关闭文件。一个FileStream对象...
分类:
其他好文 时间:
2015-04-08 00:48:57
阅读次数:
129