Dispose
Освобождает все ресурсы, используемые объектом.
Метод Dispose должен вызываться по окончании использования объекта. После вызова метода Dispose необходимо удалить все ссылки на объект, чтобы сборщик мусора мог освободить память, занимаемую объектом.
Чтобы правильно вызвать метод Dispose, следует объявить и создать объект в операторе using.
Оператор using соответствующим образом вызывает метод Dispose в объекте и приводит к выводу
объекта из области действия сразу после вызова Dispose. Оператор using гарантирует вызов
метода Dispose, даже если при вызове методов в объекте происходит исключение. Такого же
результата можно достичь при размещении объекта в блоке try и последующем вызове метода Dispose
в блоке finally (см. приложение 1).
Примечание
Метод необходимо всегда вызывать для освобождения последней ссылки на объект. В противном случае используемые им ресурсы не будут освобождены.
Синтаксис
public void Dispose();
Возвращаемое значение
Значение типа void.
Исключения
Отсутствуют.
Пример
// C#
using System;
using System.Data;
using System.Data.Common;
class DisposeSample
{
static void Main()
{
// Создание объекта DbProviderFactory
DbProviderFactory factory =
DbProviderFactories.GetFactory("System.Data.LinterClient");
// Создание объекта DbConnection
using (DbConnection con = factory.CreateConnection())
{
con.ConnectionString =
"User ID=SYSTEM;Password=MANAGER8;Data Source=LOCAL";
con.Open();
// Создание объекта DbCommand
using (DbCommand cmd = factory.CreateCommand())
{
cmd.Connection = con;
cmd.CommandText = "select * from some_table";
// Создание объекта DbDataReader
using (DbDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
for (int i = 0; i < reader.FieldCount; i++)
{
Console.Write(reader.GetValue(i) + "\t");
}
Console.WriteLine();
}
} // Метод DbDataReader.Dispose() был вызван автоматически
} // Метод DbCommand.Dispose() был вызван автоматически
} // Метод DbConnection.Dispose() был вызван автоматически
}
}