当前位置:  开发笔记 > 编程语言 > 正文

必须在C#中手动清理的资源?

如何解决《必须在C#中手动清理的资源?》经验,为你挑选了2个好方法。

必须在C#中手动清理哪些资源,以及不这样做的后果是什么?

例如,假设我有以下代码:

myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Black);
// Use Brush

如果我不使用dispose方法清理画笔,我假设垃圾收集器释放程序终止时使用的内存?它是否正确?

我需要手动清理哪些其他资源?



1> Orion Adrian..:

处理内部窗口数据结构.

数据库连接.

文件句柄.

网络连接.

COM/OLE引用.

名单还在继续.

Dispose使用该using模式调用甚至更好是很重要的.

using (SolidBrush myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Black))
{
    // use myBrush
}

如果你不处理某些东西,当垃圾收集器注意到没有更多的引用时,它会被清理掉,这可能需要一段时间.

在这种情况下System.Drawing.Brush,Windows将保持内存的窗口结构加载到内存中,直到所有程序释放其句柄.



2> Khoth..:

如果你没有处理某些东西,当垃圾收集器注意到你的代码中没有更多的引用时,它会被清理掉,这可能需要一段时间.对于类似的东西,它并不重要,但对于一个打开的文件它可能会.

一般来说,如果某个东西有Dispose方法,你应该在完成它之后调用它,或者,如果可以的话,将它包装在一个using语句中:

using (SolidBrush myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Black))
{
    // use myBrush
}

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有