我想知道在这种情况下什么时候调用析构函数,如果是,它会在主UI线程上调用吗?
假设我有以下代码,什么时候调用析构函数,它会等到我完成所有的函数调用吗?
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()时被中断,或者析构函数调用一直等到线程空闲,这就是我感兴趣的事情。
谢谢你提供的信息。
发布于 2009-08-11 10:55:36
当垃圾回收器决定必须清理一些旧对象时,将调用析构函数。在.NET中不能依赖析构函数的执行时间
如果您想在不需要时清理某些资源(特别是当您有任何非托管资源时,如TCP连接、SQL连接等),则应该使用Dispose()。
请参阅Implementing a Dispose Method
发布于 2009-08-11 10:58:42
如果管理对象的生命周期很重要,那么从IDisposible继承,然后就可以使用using keyword了。
发布于 2009-08-11 10:55:05
析构函数或终结器也被命名为析构函数或终结器,在实例可用于垃圾回收后的某个时间点调用。它不会像在C++中那样发生在确定的时间点上。
https://stackoverflow.com/questions/1259628
复制相似问题