Istnieje wiele wątków (a, b, c itd.) O tym, że Wyczyść() pozycje ING w pojemnikach NET robi nie utylizować je (poprzez wywołanie Dispose (prawda).Przejrzyste kontrole nie likwidują ich - jakie jest ryzyko?
najczęściej, IMHO, składniki Clear-ed nie są już używane w aplikacji, więc musi wyraźnie być usuwane po usunięciu ich z pojemników macierzystych.
Może to dobry pomysł, że Clear
metoda zbierania miał bool parametr dispose
, że jeśli w true również usuwa elementy kolekcji przed usunięciem z listy?
Jeśli jest to wezwanie do utylizować w finalizatora, otrzyma zbyte. Jeśli nie ma, to prawdopodobnie (jeśli programista zastosuje zaakceptowane praktyki) nic nie będzie zarządzane i bezpiecznie będzie po prostu je zebrać. –
@Aviad: Problem, że metoda Dispose nigdy nie zostanie wywołana przez GC, więc musisz to zrobić samodzielnie, przed wywołaniem Wyczyść przy odbiorze. – serhio
Mam na myśli to, że jeśli programista kontroli nie umieścił wywołania w swoim finalizatorze (który jest wywoływany, gdy obiekt jest zbiorem śmieci) - to prawdopodobnie nie ma nic do pozbycia się. –