Приложение 1. Освобождение ресурсов

Для освобождения ресурсов надо использовать оператор using или блок try...finally. Во многих примерах данного документа они опущены с целью ограничения размера документа, но при разработке реальных приложений они обязательно должны использоваться.

Оператор using

// C#
using System;
using System.Data;
using System.Data.LinterClient;

class UsingSample
{
  static void Main()
  {
    // Создание соединения
    using (LinterDbConnection con = new LinterDbConnection())
    {
      con.ConnectionString = "Data Source=LOCAL;User ID=SYSTEM;Password=MANAGER8";
      con.Open();

      // Создание команды
      using (LinterDbCommand cmd = new LinterDbCommand())
      {
        cmd.Connection = con;
        cmd.CommandText = "select 'СУБД', 'ЛИНТЕР'";

        // Выполнение команды
        using (LinterDbDataReader reader = cmd.ExecuteReader())
        {
          // Получение данных
          while (reader.Read())
          {
            Console.WriteLine(reader[0] + " " + reader[1]);
          }
        }
      }
    }
  }
}

Блок try...finally

// C#
using System;
using System.Data;
using System.Data.LinterClient;

class TryFinallySample
{
  static void Main()
  {
    LinterDbConnection con = null;
    LinterDbCommand cmd = null;
    LinterDbDataReader reader = null;

    try
    {
      // Создание соединения
      con = new LinterDbConnection();
      con.ConnectionString = "Data Source=LOCAL;User ID=SYSTEM;Password=MANAGER8";
      con.Open();

      // Создание команды
      cmd = new LinterDbCommand();
      cmd.Connection = con;
      cmd.CommandText = "select 'СУБД', 'ЛИНТЕР'";

      // Выполнение команды
      reader = cmd.ExecuteReader();

      // Получение данных
      while (reader.Read())
      {
        Console.WriteLine(reader[0] + " " + reader[1]);
      }
    }
    finally
    {
      // Освобождение ресурсов
      if (reader != null)
      {
        reader.Close();
      }
      if (cmd != null)
      {
        cmd.Dispose();
      }
      if (con != null)
      {
        con.Close();
      }
    }
  }