当前位置: 首页 > 编程语言 > C#

析构函数能保证运行完吗?分享

时间:2023-04-10 11:16:01 C#

析构函数不是保证运行完吗?析构函数很奇怪。我试图通过使用“智能”引用管理来消除使用一次性模式的需要,确保垃圾收集器可以在正确的时间收集对象。在我的一个析构函数中,我不得不等待来自另一个对象的事件,但我注意到它没有。应用程序刚刚关闭,析构函数在执行过程中终止。我想总是允许析构函数完成运行,但下面的测试表明这不是真的。使用系统诊断;使用系统线程;namespaceDestructorTest{classProgram{staticvoidMain(string[]args){newDestructorTest();新的LoopDestructorTest();using(newDisposableTest()){}}}classDestructorTest{~DestructorTest(){//这不允许完成。线。睡眠(10000);}}类LoopDestructorTest{~LoopDestructorTest(){intcur=0;for(inti=0;i