Klávesové zkratky na tomto webu - rozšířené Na obsah stránky

Blok using

19.33 - 28. července 2006 | Tuning

Jazyk C# je obdařen velice zajímavým blokem uvozený slovem using. Víte k čemu slouží? Používáte ho? Pokud jste si na jednu z předchozích otázek odpověděli negativně, měli byste si přečíst následující řádky. :)

Klíčové slovo using má v C# hned dva významy. Tím prvním je import namespaců a vytváření aliasů k třídám, ale ten je pravděpodobně provařený. Druhým významem je uvození bloku, ve kterém se používá komponenta implementující rozhranní IDisposable. Implementace IDisposable se používá k uvolňování zdrojů.

SqlConnection conn  = new SqlConnection(connString);
conn.Open();
// práce s databází
conn.Close();

To byla ukázka naivního přístupu k databázi, kdy se spoléháme, na to, že vše proběhne v pořádku a dojde k zavolání conn.Close(), což může být klidně pravda, ale pokud dojde k vyvolání jakékoli vyjímky před zavoláním conn.Close(), zůstane připojení stále otevřené, dokud nedojde k timeoutu a objekt conn nezpracuje GC. To může trvat hodně dlouho a zabírat tak zbytečně cenné systémové zdroje.

using (SqlConnection conn  = new SqlConnection(connString)) {
    conn.Open();
    // práce s databází
}

A takle by se to mělo psát. :) Blok using přijímá jako parametr disposovatelné komponenty a na konci bloku zavolá IDisposable.Dispose(). V případě SqlConnection volá metoda Dispose metodu Close. Nutno podotknout, že k zavolání metody Dispose dojde i při vyhození vyjímky. Jak je toho dosaženo? Blok using neni nic jiného než zkráceným (a pro mě i přehlednějším) zápisem následujícího kódu.

SqlConnection conn  = new SqlConnection(connString);
try {
    conn.Open();
    // práce s databází
}
finally {
    conn.Dispose();
}

Toť celé tajemství a kouzlo bloku using. Závěrem bych vám chtěl ještě doporučit blok using používat všude tam, kde používáte nejrůznější Readery, Writer a jiné třídy implemetující rozhranní IDisposable, protože tak můžete ušetřit cenné zdroje a zvýšit tak výkon vaší aplikace :) Hodně štěstí…

Komentáře RSS

  1.  

    Discogio

    22.44 - 28. července 2006 | #

    Víme známe, ale try,catch,finally je hezčí :P

Místo pro tvůj názor

Povinné je jméno a komentář, z e-mailu se rozpoznají Gravatary.
Komentář je formátován pomocí Texy! syntaxu.
Například: **tučný text**, *kurzíva*, "text odkazu":adresa.
Internetové adresy jsou převáděny na odkazy.
Na komentáře se můžete odkazovat pomocí [číslo komentáře].

Nový komentář