首页 新闻 会员 周边

如何区分托管资源和非托管资源

0
悬赏园豆:10 [已解决问题] 解决于 2009-04-11 11:28
<html xmlns=""> <p>托管资源有由GC进行回收,非托管资源需要自己显式回收,但是如何区分那些事托管资源,那些是非托管资源呢?有点糊涂~请知道的朋友加以指点!C#</p>
Luffy Huang的主页 Luffy Huang | 初学一级 | 园豆:25
提问于:2009-04-07 09:01
< >
分享
最佳答案
-1

(1)托管资源一般是指被CLR控制的内存资源,这些资源的管理可以由CLR来控制,例如程序中分配的对象,作用域内的变量等。
(2)非托管资源是CLR不能控制或者管理的部分,这些资源有很多,比如文件流,数据库的连接,系统的窗口句柄,打印机资源 等,这些资源一般情况下不存在于Heap(内存中用于存储对象实例的地方)中。

托管资源:从文字上看就是托付给别人管理,就像.NET的CLR,java的jvm
非托管资源:直接和os打交道,不知道这么说合理不?

生鱼片 | 大侠五级 |园豆:5757 | 2009-04-07 12:38
其他回答(4)
0

classes which implement from "IDisposable" interface,
like "
DbConnection" class, "BinaryReader" and I/O class,
"
DbDataReader" class, ...etc.

if your object or instance has "Dispose" method,
always execute it in the "finally" block in your code.

WizardWu | 园豆:1402 (小虾三级) | 2009-04-07 11:18
0

楼上说的很好。

侯垒 | 园豆:3435 (老鸟四级) | 2009-04-07 12:58
0

很赞成2楼的说法!

程序开发环境中区别

托管:系统必须有.NET框架,编译为中间语言,安全性好,开发高效   
非托管:直接运行,编译为本地代码,灵活性好,受人为因素影响比较大

革命军马前卒 | 园豆:255 (菜鸟二级) | 2009-04-07 14:06
0

基本上你不会遇到非托管资源.

而当你需要用到非托管资源的时候,你自然就明白什么是非托管资源了.

Launcher | 园豆:45045 (高人七级) | 2009-04-07 22:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册