Starší komentáře ke článku: Třídění v ovládacím prvku DataGrid

Zpět na článek | Úvodní stránka Interval.cz

Avatar

Autor komentáře: mates

Datum vložení: 18.3.2004 10:48:35

Cau Ondro.
Dotaz ... cmd1.Dispose(); - pokud dobre chapu tuto metodu, tak uvolnuje zvolene nepotrebne zdroje z pameti serveru. V tvem pripade objekt SqlDataAdapter. Nebylo by proto vhodne rusit take objekt SqlConnection, nebo staci ta tebou pouzita metoda ... tzn. conn1 = null; ?
Thx
mat

Avatar

Autor komentáře: Ondřej Kopp

Datum vložení: 18.3.2004 11:38:12

conn1= null a conn1.Dispose() by meli mít stejnou funkcnost

Avatar

Autor komentáře: Radim Hampel

Datum vložení: 18.3.2004 14:53:42

Souhlasim. "Nulovani" promenne a volani dispose prislusneho dispose ma tady stejny vyznam, a to konkretne - zadny. Dispose ma vyznam v pripade unmanaged resourcu, navic vetsinou existuje lidstejsi varianta - close(neni mezi nimi v tomto pripade zasadni rozdil).

Fill metoda si navic otevira connection sama, pokud neni otevrena, a zase ji zavre, kod by tedy vypadal o neco lepe takto:
SqlCmd = "select ..."
Adapter = new Adapter(SqlCmd, Conn); // closed conn
Adapter.Fill(DS);
// that's all

Avatar

Autor komentáře: Ondřej Kopp

Datum vložení: 18.3.2004 11:52:09

Snad je pro upřesnění....

teměř všude v prikladech od MS se vyskytuje pouze conn1.Close() a nikde uz neni null ci Dispose()...

IMHO dulezite je hlavně Close a o zbytek by sem měl postarat GC

Avatar

Autor komentáře: Jagerský Ondrej

Datum vložení: 6.9.2004 9:47:24

Pokiaľ som pochopil rozdiel metódy dispose a close tak po close je spojenie zavreté a zdroje uvolnené, ale manager riadenia ho ponecháva v nejakom zásobníku a pri ďalšej požiadavke na spojenie ho ponúkne napr. inému užívateľovi. Ak tá požiadavka do určitého času nepríde, tak manager riadenia sám volá metódu Dispose a vyhodí objekt z pamäte úplne.
Ak chcete vyhodiť objekt spojenia z pamäte hneď, voláte sami metódu Dispose. V tom prípade však pri novej požiadavke na spojenie sa tento objekt znovu vytvára ako sa hovorí od piky, čo predstavuje určitú réžiu a tým aj spomalenie. Takže dispose používam vtedy keď sa potrebujem a môžem dlhšie hrať so skupinou dát a uložiť všetky zmeny naraz po skončení aktualizácie. Ak však zdielam tie isté dáta s viacerými užívateľmi a z toho dôvodu aktualizujem zdroj dát po zmene každého záznamu, tak dispose nepoužívam, pretože spojenie každú chvíľu potrebujem. Len ho zatváram, aby som uvoľnil čo najviac zdrojov, resp. umožnil použitie tohto objektu inému užívateľovi.

Zpět na článek | Úvodní stránka Interval.cz