今天有时间了,学习了下IDisposable,在园子里看了不少文章,受益很多,在此先谢过各位大侠了,在Reflector里面看到了一个实现,自己感觉还不错,先copy出来,防止忘记啊,

Code
class ResourcePool
{

// Fields
    private TimerCallback _callback;
    private bool _disposed;
    private int _iDisposable;
    private TimeSpan _interval;
    private int _max;
    private ArrayList _resources;
    private Timer _timer;

// Methods
    internal ResourcePool(TimeSpan interval, int max)
    {
        this._interval = interval;
        this._resources = new ArrayList(4);
        this._max = max;
        this._callback = new TimerCallback(this.TimerProc);
    }

public void Dispose()
    {
        this.Dispose(true);
    }

private void Dispose(bool disposing)
    {
        lock (this)
        {
            if (!this._disposed)
            {
                if (this._resources != null)
                {
                    foreach (IDisposable disposable in this._resources)
                    {
                        disposable.Dispose();
                    }
                    this._resources.Clear();
                }
                if (this._timer != null)
                {
                    this._timer.Dispose();
                }
                this._disposed = true;
                if (disposing)
                {
                    GC.SuppressFinalize(this);
                }
            }
        }
    }

~ResourcePool()
    {
        this.Dispose(false);
    }
// 其它省略了,不是这篇的重点
}

这个算做为备忘录吧。上面的代码可以防止重复释放,也加锁了,不会出现线程不安全的情况了,(我这样理解的,不知道对不)
可是我现在有个疑问了,对于if(disposing){GC.SuppressFinalize(this);}在这里,我们需要做的是释放托管资源,并告诉GC,不用再释放了。
http://www.cnblogs.com/michaelhuwei/archive/2007/12/28/1018646.html在这篇有提到对于一些托管资源的释放,像DataSet,需要手动释放。
现在问题来了,如果我们这里不手动释放DataSet这样的管托资源,会出现什么状况呢??GC还会在回收吗?如果会的话,SuppressFinalize不是请求系统不要调用指定对象的终结器的吗?还请各路高手不吝指教,谢谢了~

转载于:https://www.cnblogs.com/BruceZhang/archive/2009/09/25/1573866.html

学习IDisposable,对于此中的不解……请高手指点相关推荐

  1. matlab竖向正负柱状图,echarts竖向正负柱状图【如何用EXCEL做正负柱状图?请高手指点,谢谢】...

    excel中如何绘制正负柱状图 excel中如何绘制正负柱状图其实很容易,只要数据区分正负即可,系统作图会自动形成正负图,至于选择横图还是竖图可以自己进行选择. 为了区分正负,也可以根据情况,将负数图 ...

  2. c语言程序能运行但屏幕不显示图片,c运行程序屏幕无显示!~~请高手指点!~~~...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 在tc和tcforwin中运行下列程序电脑黑屏没有任何显示,但是当我在其他一些电脑上运行时可以正常显示片树叶,不知道原因,请高手指点. #include  ...

  3. 两路音频合成一路电路_请高手指点下:两路模拟音频信号怎么样才能合成一路再通过喇叭输出...

    请高手指点下:两路模拟音频信号怎么样才能合成一路再通过喇叭输出 nino61 Post at 2008/3/31 9:56:16 小弟,刚接触这方面的知识,不太懂,查了好多资料都没有收获, 希望好心人 ...

  4. MacBook Pro(13 英寸,2011 年末)A1278 老机器换了 好几个版本的系统,一直没有隔空投送,请高手指点!

    MacBook Pro(13 英寸,2011 年末)A1278 老机器换了 好几个版本的系统,之前OS X 10.11 El Capitan没太注意,换Mac OS High Sierra后,有隔空投 ...

  5. 反复出现的PSW木马, 附日志,请高手指点

    Trojan.PSW. Win32.onlinegames.zqw这类变种太多,还有Trojan.PSW.Win32.Wowar.abc, *.zhengtu.ykt, *. YBonline.bl, ...

  6. java 中创建数据端口_java 如何在服务器端用socket创建一个监听端口,并对接受的数据进行处理,端口号为3333,请高手指点一下...

    匿名用户 1级 2011-09-10 回答 我百度HI你好了 public class Test { public static void main(String[] args) { Test1 t= ...

  7. winhex搜索中的偏移问题?请高手指点

    有朋友能帮我解释一下那个:COND:offset mod是什么意思,具体如何的设置. 谢谢了!!!!! 转载于:https://blog.51cto.com/willsz/170449

  8. 控制计算机价格,本人对电脑不太懂。想十一买台笔记本电脑。价格控制在5000之内。请高手指点一下。谢谢!...

    你好朋友,要达到你的需求,至少应该满足三点,一是15.6尺寸:二是I5以上处理器,三是大容量内存,最好是6-8G的.你选择的两款,第一款已经停产,第二款还不错,新架构处理器,高主频内存,只是显卡偏弱, ...

  9. [转载] python打包程序在win10不能运行、点击无反应_Windows10平台用PyInstaller打成exe程序后不能运行请高手指点...

    参考链接: Python中的numpy.iscomplexobj 1 pyinstaller -F G:\pythonproject\StimulateTheBattlefield\graphtest ...

最新文章

  1. R语言使用reshape2包的dcast函数将dataframe从长表到宽表(Long- to wide-format)、指定单个标识符、、表格转化的时候值不唯一设置聚合函数(均值)
  2. JavaWeb学习总结(五十二)——使用JavaMail创建邮件和发送邮件
  3. HBase Error IllegalStateException when starting Master: hsync
  4. c++ 读取数字,直到输入非数字字符为止的算法(附完整源码)
  5. 「C++」C++ Primer Plus 笔记:第十七章 输入、输出和文件
  6. 【Qt】QModbusReply类
  7. 《中国当代乡土小说大系》明年出版
  8. PB-treeview基本属性事件函数
  9. Oracle 非dba用户 使用 set autotrace 功能
  10. BZOJ1111 : [POI2007]四进制的天平Wag
  11. 181025词霸有道扇贝每日一句
  12. 多个相同name的文本输入框,输入其中一个后,使剩下的不能输入值
  13. android 改机型玩王者,安卓手机改机型华为nova 8 Pro体验《王者荣耀》90帧超高帧率模式...
  14. html 表格单元格点击事件,bootstrap table onClickCell点击单元格事件
  15. vue 数组 unshift push shift pop
  16. 如何快速高效的刷Leetcode
  17. SAP 物料号系统内部编码导入BAPI报错(E M_ 17)
  18. 公司股权分配协议范文
  19. 暑假学习计划:Day_1.JSPServletTomcat 环境搭建到基础的认识。
  20. 开源协议是什么?有哪些?如何选择?

热门文章

  1. leetcode - 1191. K 次串联后最大子数组之和
  2. Matlab--view函数详解
  3. Maven简述及安装
  4. python实训的意义_[Python] 一个让我更加清楚地理解了字典的实验……
  5. windows10搜索网络计算机,教你如何关闭Win10搜索的网络搜索功能
  6. sqlite 复合唯一索引_sqlite 批量插入, 重复插入(更新)
  7. android studio放置在函数上面看_像写Flutter一样开发Android原生应用
  8. access 动态 top 条件_2020年10月抖音直播营销报告_行业动态
  9. css自动换行加前置_StudyNode -- CSS
  10. java 检测表情符号_java – 检测String中的字符是否是表情符号(使用Android)