.net里的Socket对象是属于托管资源还是非托管资源? 同样的Semaphore这个是属于托管还是非托管资源呢?
这些类是包装操作系统资源的,我一直理解为这些是非托管资源,但是在.net这些类应该已经对系统资源进行了封装了,.net应该是知道如何对这些类进行回收的,应该属于托管资源。
也就是说我们如何判断一个对象是托管资源还是非托管资源呢?(感觉有些类虽然代表着系统资源,一眼看过去会认为是非托管资源,但已经其实被封装好了,.net应该是知道如何对其进行回收的,应该是托管资源。)
或者说我们编程中哪些是属于非托管资源的,能举几个例子吗?
非托管:SerialPort 需要手动释放.. 这个不清楚,mark坐等大佬回答
非托管 非托管
.net知道如何回收这些资源,但是不知道何时回收,一般情况下非托管资源可以由.net自动回收,但是有些资源比较少,需要手动自动回收。
如何判断对象是不是托管资源? 全部资源由CLR管理的是托管资源,其他的不是,简单说一个对象如果保存了非托管资源就是非托管资源。基本只能靠文档来分辨是不是。当然,如果一个类实现了IDospose接口,就需要确认一下是不是非托管资源。