首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在这种情况下,何时调用我的析构函数?(C#)

在这种情况下,何时调用我的析构函数?(C#)
EN

Stack Overflow用户
提问于 2009-08-11 10:52:00
回答 5查看 4K关注 0票数 6

我想知道在这种情况下什么时候调用析构函数,如果是,它会在主UI线程上调用吗?

假设我有以下代码,什么时候调用析构函数,它会等到我完成所有的函数调用吗?

代码语言:javascript
复制
private void Foo()
  {
  MyObject myObj = new MyObject();
  DoSomeFunThingsWithMyObject(myObj);

  myObj = new MyObject(); //is the destructor for the first instance called now?
  DoLongOminousFunctionality(myObj);  
  }
  //Or will it be called after the DoLongOminousFunctionality?

如果线程在myObj = new MyObject()时被中断,或者析构函数调用一直等到线程空闲,这就是我感兴趣的事情。

谢谢你提供的信息。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-08-11 10:55:36

当垃圾回收器决定必须清理一些旧对象时,将调用析构函数。在.NET中不能依赖析构函数的执行时间

如果您想在不需要时清理某些资源(特别是当您有任何非托管资源时,如TCP连接、SQL连接等),则应该使用Dispose()。

请参阅Implementing a Dispose Method

票数 17
EN

Stack Overflow用户

发布于 2009-08-11 10:58:42

如果管理对象的生命周期很重要,那么从IDisposible继承,然后就可以使用using keyword了。

票数 3
EN

Stack Overflow用户

发布于 2009-08-11 10:55:05

析构函数或终结器也被命名为析构函数或终结器,在实例可用于垃圾回收后的某个时间点调用。它不会像在C++中那样发生在确定的时间点上。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1259628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档