Контракт освобождения ресурсов в C#
Явное освобождение удобно оформлять общим контрактом, чтобы вызывающий код знал, какой метод вызвать.
IDisposable - интерфейс с одним методом
Dispose. Класс, который держит файл
или другое внешнее состояние, реализует этот
интерфейс и в Dispose закрывает ресурс.
Класс сессии реализует интерфейс:
LogSession session = new LogSession();
Console.WriteLine(session.open);
session.Dispose();
class LogSession : IDisposable {
public bool open = true;
public void Dispose() {
open = false;
Console.WriteLine("closed");
}
}
Сделайте класс Gate с полем locked.
Оформите явное освобождение общим контрактом
языка, как в примере урока, и при завершении
работы снимите блокировку с сообщением
на экран.
Создайте объект Gate, завершите работу
с ресурсом вручную и проверьте поле после этого.