У меня есть класс A, обеспечивающий растровые изображения для других классов B, C и т. Д.Как я могу избавиться от объекта (скажем Bitmap), когда он становится сиротой?
Теперь класс A хранит растровые изображения в кольцевой очереди, поэтому через некоторое время он потеряет ссылку на растровое изображение.
Пока он находится в очереди, тот же битмап может быть проверен несколькими классами, так что, скажем, B и C могут удерживать ссылку на этот же битмап. Но также может случиться так, что только один из них проверил битмап или даже ни один из них.
Я хотел бы избавиться от растрового изображения, когда он не нужен больше либо A, B или C.
Я предполагаю, что я должен сделать B и C отвечает за каким-то образом сигнализации, когда они закончили использовать но я не уверен в общей логике.
Если это будет призыв к чему-то вроде DisposeIfNowOrphan(), который будет называться, в этом примере, три раза:
1 - когда Bitmap пинают из очереди в классе А
2 - когда B закончит с ним
3 - когда C закончит с ним
Если это лучшая стратегия, как я могу оценить состояние сироту?
Любые советы были бы очень желанными.
Это помогло бы, если бы вы могли уточнить, поддерживают ли классы A, B и C ссылку на растровое изображение, когда они закончили с ним, оставив только очередь со ссылкой. – tames
@tames: Это на самом деле то, что открыто для совета. Я хочу принять соответствующую стратегию, которую могут рекомендовать ответчики. –