Я столкнулся с вопросом на собеседовании, на который я не знал ответа (небольшая помощь :) ) ну там было что-то вроде:
Class SomeClass : IDisposable
{
public void Dispose()
{
while(true)
{
}
}
~SomeClass()
{
Dispose();
}
}
1) Финализируется ли объект, когда на него больше не ссылаются после следующего GC? Мой ответ был НЕТ, потому что поток финализации застрянет в бесконечном цикле.
2) Что можно сделать в Dispose для завершения финализации и сколько раз цикл будет продолжаться до того, как объект будет утилизирован (без учета времени, которое он проведет в следующем Gen)
Я не очень понимаю точный вопрос (2), у меня вроде как закончилось время...
Не зная ответа, я поставил статический счетчик, который доходит до 3, вызывает break и сообщает 3. что технически будет работать :), но это не ответ
Я предполагаю, что это как-то связано с GC.SupressFinalize()? может быть, вызов GC.SupressFinalize() перед входом в цикл?
есть идеи, если не по поводу ответа на непонятный вопрос, то скорее по поводу того, на что они могли быть нацелены?