.NET a uvoľňovanie objektov – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

.NET a uvoľňovanie objektov – .NET – Fórum – Programujte.com.NET a uvoľňovanie objektov – .NET – Fórum – Programujte.com

 

mylan40
Super člen
18. 6. 2008   #1
-
0
-

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?

Nahlásit jako SPAM
IP: 85.248.56.–
18. 6. 2008   #2
-
0
-

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.

Nahlásit jako SPAM
IP: 84.21.124.–
Dušan Janošík | web: djanosik.cz, @djanosik
mylan40
Super člen
18. 6. 2008   #3
-
0
-

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?

Nahlásit jako SPAM
IP: 85.248.56.–
mephi0
Expert
19. 6. 2008   #4
-
0
-

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.

Nahlásit jako SPAM
IP: 85.248.56.–
Program nemusi fungovat rychle, staci ze funguje dostatecne rychle.
mylan40
Super člen
19. 6. 2008   #5
-
0
-

To mephi : Keď tomu dobre rozumiem, tak GC automaticky "ničí" len "managed" veci a práve Dispose je na tie "unmanaged" zdroje.
Alebo nie? :smile11:

Nahlásit jako SPAM
IP: 85.248.56.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 11 hostů

Podobná vlákna

Mnozenie objektov — založil adoweb

Pole objektov — založil Tayson

Presvitanie objektov — založil robo1990o

Výpis objektov — založil Bigbob

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý