8 个解决方案
#1
如果一个用托管代码写的类包含非托管的字段,那么它会不会被GC回收?是必须实现IDisposable接口,还是只需要在构析函数里面调用Disposable就够了?谢谢各位大神
=========================================
不会被回收,不是必须实现IDisposable,
IDisposeable接口只是给你能够及时释放的他机会。
所以不是只要调用Disposeable,就可以,比如你可以写一个CLOSE函数,想要结束他的时候CLOSE
=========================================
不会被回收,不是必须实现IDisposable,
IDisposeable接口只是给你能够及时释放的他机会。
所以不是只要调用Disposeable,就可以,比如你可以写一个CLOSE函数,想要结束他的时候CLOSE
#2
再请教下,这个Close方法应该写些什么?C#似乎无法手动释放非托管资源
#3
对,你可以反编译一下ado.net socket,io 下面的类看看
#4
不用显示调用吧,系统会自己清理。当前提前释放的好处是,马上得到释放的资源
#5
如果一个用托管代码写的类包含非托管的字段,那么它会不会被GC回收?是必须实现IDisposable接口,还是只需要在构析函数里面调用Disposable就够了?谢谢各位大神
=========================================
不会被回收,不是必须实现IDisposable,
IDisposeable接口只是给你能够及时释放的他机会。
所以不是只要调用Disposeable,就可以,比如你可以写一个CLOSE函数,想要结束他的时候CLOSE
再请教下,这个Close方法应该写些什么?C#似乎无法手动释放非托管资源
对,你可以反编译一下ado.net socket,io 下面的类看看
前面因为没看仔细。回复有些问题。c# 可以释放非托管资源,因为.net 可以调用平台本身提供的服务。请搜索msdn 关于 平台调用部分。
#6
GC回收的是CLR管理的托管代码,非托管的回收不了,IDisposable接口提供了一种释放非托管资源的方式。网上关于释放资源的文章很多的,
http://www.360doc.com/content/13/0106/18/6295074_258608963.shtml
http://www.360doc.com/content/13/0106/18/6295074_258608963.shtml
#7
非托管对象不会被 GC 回收。
实现 IDisposable 不是必需的,不过要使用 using 语法,就必须要实现 IDisposable
在析构函数里面释放资源,是一种行之有效的写法,.net framework 类库就有这样的做法,不过因为析构函数被调用的时间不定,所以这种写法不是万能的,也会造成内存占用过多。
实现 IDisposable 不是必需的,不过要使用 using 语法,就必须要实现 IDisposable
在析构函数里面释放资源,是一种行之有效的写法,.net framework 类库就有这样的做法,不过因为析构函数被调用的时间不定,所以这种写法不是万能的,也会造成内存占用过多。
#8
非托管的,就要手动释放。
析构函数和GC的机制,那就不是我们控制的了。
析构函数和GC的机制,那就不是我们控制的了。
#1
如果一个用托管代码写的类包含非托管的字段,那么它会不会被GC回收?是必须实现IDisposable接口,还是只需要在构析函数里面调用Disposable就够了?谢谢各位大神
=========================================
不会被回收,不是必须实现IDisposable,
IDisposeable接口只是给你能够及时释放的他机会。
所以不是只要调用Disposeable,就可以,比如你可以写一个CLOSE函数,想要结束他的时候CLOSE
=========================================
不会被回收,不是必须实现IDisposable,
IDisposeable接口只是给你能够及时释放的他机会。
所以不是只要调用Disposeable,就可以,比如你可以写一个CLOSE函数,想要结束他的时候CLOSE
#2
如果一个用托管代码写的类包含非托管的字段,那么它会不会被GC回收?是必须实现IDisposable接口,还是只需要在构析函数里面调用Disposable就够了?谢谢各位大神
=========================================
不会被回收,不是必须实现IDisposable,
IDisposeable接口只是给你能够及时释放的他机会。
所以不是只要调用Disposeable,就可以,比如你可以写一个CLOSE函数,想要结束他的时候CLOSE
再请教下,这个Close方法应该写些什么?C#似乎无法手动释放非托管资源
#3
如果一个用托管代码写的类包含非托管的字段,那么它会不会被GC回收?是必须实现IDisposable接口,还是只需要在构析函数里面调用Disposable就够了?谢谢各位大神
=========================================
不会被回收,不是必须实现IDisposable,
IDisposeable接口只是给你能够及时释放的他机会。
所以不是只要调用Disposeable,就可以,比如你可以写一个CLOSE函数,想要结束他的时候CLOSE
再请教下,这个Close方法应该写些什么?C#似乎无法手动释放非托管资源
对,你可以反编译一下ado.net socket,io 下面的类看看
#4
不用显示调用吧,系统会自己清理。当前提前释放的好处是,马上得到释放的资源
#5
如果一个用托管代码写的类包含非托管的字段,那么它会不会被GC回收?是必须实现IDisposable接口,还是只需要在构析函数里面调用Disposable就够了?谢谢各位大神
=========================================
不会被回收,不是必须实现IDisposable,
IDisposeable接口只是给你能够及时释放的他机会。
所以不是只要调用Disposeable,就可以,比如你可以写一个CLOSE函数,想要结束他的时候CLOSE
再请教下,这个Close方法应该写些什么?C#似乎无法手动释放非托管资源
对,你可以反编译一下ado.net socket,io 下面的类看看
前面因为没看仔细。回复有些问题。c# 可以释放非托管资源,因为.net 可以调用平台本身提供的服务。请搜索msdn 关于 平台调用部分。
#6
GC回收的是CLR管理的托管代码,非托管的回收不了,IDisposable接口提供了一种释放非托管资源的方式。网上关于释放资源的文章很多的,
http://www.360doc.com/content/13/0106/18/6295074_258608963.shtml
http://www.360doc.com/content/13/0106/18/6295074_258608963.shtml
#7
非托管对象不会被 GC 回收。
实现 IDisposable 不是必需的,不过要使用 using 语法,就必须要实现 IDisposable
在析构函数里面释放资源,是一种行之有效的写法,.net framework 类库就有这样的做法,不过因为析构函数被调用的时间不定,所以这种写法不是万能的,也会造成内存占用过多。
实现 IDisposable 不是必需的,不过要使用 using 语法,就必须要实现 IDisposable
在析构函数里面释放资源,是一种行之有效的写法,.net framework 类库就有这样的做法,不过因为析构函数被调用的时间不定,所以这种写法不是万能的,也会造成内存占用过多。
#8
非托管的,就要手动释放。
析构函数和GC的机制,那就不是我们控制的了。
析构函数和GC的机制,那就不是我们控制的了。