引用GC.WaitForPendingFinalizers()的MSDN文档
运行终结器的线程未指定,因此无法保证此方法将终止。
我不太明白这句话。这种方法在什么情况下不终止?这与终结器运行的线程有什么关系?为什么他们说线程是“未指定的”?
关于终结器线程,我假设以下内容是正确的(?):
注意:我可以想象,当其中一个终结器被阻塞时,这个方法会阻塞,但是无论对终结器使用什么线程,都存在这个问题。
发布于 2012-10-04 08:13:19
在下列特殊情况下,Finalize方法可能无法运行到完成,或者根本不运行:
发布于 2012-10-04 08:10:21
首先,除了SuppressFinalize之外,通常不需要在GC类中使用方法。大多数其他方法通常会使您的应用程序性能最差,而不是更好。
但是,为了回答您的问题,据我所知,在执行收集时,有内部列表由终结器的垃圾收集器保存,和它们都顺序运行在同一个线程上。这意味着,如果一个终结器块,那么我猜这个方法也会阻塞。
当应用程序域关闭时,所有终结器都有一个完成时间限制,在这种情况下,我想这并不重要。
https://stackoverflow.com/questions/12731280
复制相似问题