Aktywne Wpisy

Wezzore-04 +460
źródło: Zdjęcie z biblioteki
Pobierz
PiccoloColo +826
Ania Gotuje to kulinarny nadczłowiek i damska sigma
#takaprawda
Edit. Lewandowski wybrał nie tą Ankę co trzeba.
#takaprawda
Edit. Lewandowski wybrał nie tą Ankę co trzeba.
źródło: temp_file1814255085765960883
Pobierz


![Prawdziwy powód dlaczego Francja rozważa wojnę z Rosją [ENG]](https://wykop.pl/cdn/c3397993/f12ab33a0dbd0cda86d78a261b088f34f34249b8ba5e2ffb7be7d93d17d433e8,q70.jpg)

Ktoś mi wytłumaczy w jakim celu usuwa się zarządzane zasoby w dispose pattern tylko w przypadku wywołania Dispose() ale nie usuwa się ich w finalizerze/destruktorze? Przecież one tak czy siak zostaną usunięte przez grabarza. Czy chodzi o to, żeby nikt nie odwoływał się gdzieś w kodzie do tych zasobów już po wywołaniu dispose (bo obiekt jest już wyczyszczony i nie powinien być używany) ?
źródło: comment_yZDi1XzalqXp5Oxqj0QJIhZCi8TdBMzE.jpg
PobierzTaka dodatkowa uwaga: jeśli masz taką możliwość, to nie dopuść do wywołania kodu finalizera ponieważ obiekty oznaczone do zfinalizowania przenoszą się o generacje wyżej przez co żyją
1. Normalne użycie - wywołany jest Dispose() który czyści zarządzane i niezarządzane zasoby i ponieważ jest także wywołana metoda GC.SuppressFinalize to tak naprawdę finalizer już nie będzie wywołany przez grabarza
2. Użycie gdy ktoś zapomni wywłać dispose albo opakować w using - wtedy finalizer jest wywołany przez grabarza i on sam już czyści sobie zarządzane zasoby
1. Tak
2. Gdy ktoś zapmni wywołać Dispose, to finalizer czyści niezarządzane zasoby. Zarządzane zasoby są czyszczone niezależnie od finalizera.