O uvoľnovaní objektov som si už prečítal pár článkov, ale stále mi to nie je jasné...
1. Prečo sa vlastne používa príkaz Dispose() ? Veď keď na nejaký objekt v pamäti nevedie žiadny odkaz, GC ho zničí - prečo ho nezničí úplne?
2. Kedy sa vlastne uvoľní pamäť (resp. objekt sa stane nepoužiteľným)? V momente zavolania f-cie Dispose alebo po zavolaní Dispose a zrušení všetkých odkazov na objekt?
3. Mám napr. objekt triedy Button. Ak zavolám btn.Dispose() treba potom zavolať aj napr. btn.Image.Dispose() alebo sa to už uvoľní automaticky?
4. Ako je to pri zatváraní okna (dialogového)? Napr. frm.ShowDialog() ... spracovanie údajov z frm... treba potom frm.Dispose?
Fórum › .NET
.NET a uvoľňovanie objektov
To mylan4 : Odpovím ti jen stručně. Snad to bude stačit.
1. Dispose není nutné používat. Slouží k uvolňování neřízených zdrojů (obrázky, apod), se kterými objekt pracuje.
2. Vzhledem k 1. otázce asi není třeba odpovídat. Paměť se uvolní v momentě, kdy GC provede "svoz odpadků".
3. Určitě stačí btn.Dispose().
4. Záleží na tom, co s tím dialogem děláš.
Možná sepíšu nějakej článek o likvidaci objektů v .NETu.
To djanosik : Ďakujem. Ten článok by bol super! :smile2:
3. A čo ak je takáto situácia:
Dim bmp As New Bitmap("obrazok.jpg")
'....
Dim btn As New Button
btn.Image = bmp
btn.Dispose
Podľa mňa by mala byť tá bitmapa naďalej použiteľná, veď nemusela byť len na tom tlačidle... ???
4. Mám hlavný formulár, vytvorím v ňom novú inštanciu 2. formulára - dialóg. okno - zobrazím ho, vyberiem v ňom obrázok, ktorý uložím do public premennej toho 2. formulára, okno zatvorím. V hlavnom formulári chcem s tým obrázkom pracovať - takže vlastne pristupujem k public premennej toho 2. formulára. Treba v tomto prípade po skončení uvoľniť tú public premennú, resp. 2. formulár?
ak ti to pomôže ja dispose nepouživam :) O pamäť resp. o uvoľnovanie sa staram až ak robim nejake, nazvime to zverstvá :) inak nie. A žiadny problem som s tym nemal. Veď použivajme GC keď ho už niekto spravil.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
DataSet (DataTable) a uvolnovanie z pamäte — založil manro
Mnozenie objektov — založil adoweb
Pole objektov — založil Tayson
Presvitanie objektov — založil robo1990o
Výpis objektov — založil Bigbob
Moderátoři diskuze