首页 新闻 会员 周边

关于.net core 下的析构函数

0
[已解决问题] 解决于 2017-08-16 16:57

环境 .net core 2.0  vs for mac

 1 namespace t2
 2 {
 3     class Program
 4     {
 5         static void Main(string[] args)
 6         {
 7             var dd = new DisposeCls();
 8             dd.Dispose();
 9             dd = null;
10             GC.Collect();
11 
12             Console.ReadKey();
13         }
14     }
15 
16     public class DisposeCls : IDisposable
17     {
18         ~DisposeCls(){
19             Console.WriteLine("call ~~~");
20         }
21 
22         public void Dispose()
23         {
24             Console.WriteLine("call dispose");
25         }
26     }
27 }

上面代码只会输出  call dispose ,不会调用析构函数,求解

文艺的码农的主页 文艺的码农 | 初学一级 | 园豆:186
提问于:2017-08-16 11:10
< >
分享
最佳答案
0

https://github.com/dotnet/corefx/issues/5205

文艺的码农 | 初学一级 |园豆:186 | 2017-08-16 16:56
其他回答(2)
0

会不会就是对象没释放.你在对象里弄一个定时器.定时输出.

看看回收后还会不会继续输出.

吴瑞祥 | 园豆:29449 (高人七级) | 2017-08-16 11:28

就是没释放,但是为什么呢,都已经去掉引用并且强制GC了

支持(0) 反对(0) 文艺的码农 | 园豆:186 (初学一级) | 2017-08-16 12:00

在 windows .net framwork 上能正常析构

支持(0) 反对(0) 文艺的码农 | 园豆:186 (初学一级) | 2017-08-16 12:02

@文艺的码农: 那就是内存回收机制不一样的.怎么不一样就不知道了

用using包起来能控制他一定被释放不?

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-08-16 13:46

@吴瑞祥: using 就是调用dispose

支持(0) 反对(0) 文艺的码农 | 园豆:186 (初学一级) | 2017-08-16 14:01

https://github.com/dotnet/corefx/issues/5205

支持(0) 反对(0) 文艺的码农 | 园豆:186 (初学一级) | 2017-08-16 16:56
0

换 1.1 试试,2.0 不可能有这么明显的问题吧。

loongchao | 园豆:208 (菜鸟二级) | 2017-08-16 15:25

1.1没有实现 Idisposeable接口

支持(0) 反对(0) Bluto | 园豆:317 (菜鸟二级) | 2017-08-16 15:54

https://github.com/dotnet/corefx/issues/5205

支持(0) 反对(0) 文艺的码农 | 园豆:186 (初学一级) | 2017-08-16 16:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册