и _forceStop никогда не устанавливается в значение true, будет ли объект собираться?
Нет.
Объект не может быть собран мусором, пока один из его методовнаходится на стеке вызовов потока.В стеке вызовов есть ссылка на объект.
В этом случае ProcessInBackground
- это метод в стеке вызовов потока.
Ответ Джона исправляет мой ответ - сборщик мусора работаеткогда он уверен, ссылки больше не будут использоваться, включая ссылку this
.Это означает, что объект может быть собран, пока у него есть метод в стеке вызовов (этот метод может использовать другие методы, но не использовать ни одного из собственных членов этого экземпляра).
В моем собственном коде у меня нетфинализаторы.У меня есть несколько предметов, которые меня волнуют, когда их собирают.Когда я ожидаю, что они будут собраны, они не будут в стеке вызовов в этот момент.Если они собираются, когда они находятся в стеке вызовов, потому что .net считает, что это хорошо, я не проблема.
Я не думаю, что эта деталь изменит то, как я должен писать какой-либо код, поэтому я 'Я собираюсь продолжить писать код, как если бы мой неверный факт, приведенный выше, был правдой, хотя и немного помнил о его неправильности.Если моя ситуация схожа с вашей, вы тоже можете это сделать.