Учитывая следующий сценарий, используя C#:.NET сборщик мусора «состояние гонки»
Someclass lInstance = new SomeClass();
System.WeakReference lWInstance = new System.WeakReference(lInstance);
lInstance = null;
System.GC.Collect();
System.GC.SuppressFinalize(lWInstance.Target);
Представьте себе, что когда SuppressFinalize выполняет АЯ нить уже внутри Finalizer коды SomeClass.
Вопрос в том, что произойдет? Я предполагаю, что после того, как поток GC вступил в финализатор, подавляя его, он не влияет.
Что случилось, когда вы попробовали? Я предполагаю, что иногда финализатор выполняется, а иногда нет. – dtb
System.GC.Collect() не гарантирует ничего. Он может просто запланировать сбор. Я предполагаю, что после завершения финализации он не будет остановлен, если у него нет дополнительных проверок. – CodingBarfield
Зачем вам все это? 'SuppressFinalize' должна быть оптимизацией производительности, не более того. – CodesInChaos