У меня вопрос о параметрах метода IDisposable.
Предположим, у меня есть класс, который реализует интерфейс IDisposable, например, "TestClass":
class TestClass : IDisposable
{
public void TestMethod()
{
Console.WriteLine("I am a Test Method");
}
public void Dispose()
{
Console.WriteLine("Test Method was disposed!");
}
}
Предположим, я хочу поместить экземпляр класса IDisposable (например, контекст DB) в метод для выполнения контекстно-зависимые действия. Обычно мы используем это, как в следующем примере:
static void Main(string[] args)
{
using (var context = new TestClass())
{
X(context);
}
}
public static void X(TestClass context)
{
context.TestMethod();
}
В результате, как и ожидалось, вызывается метод Dispose (). (Отладчик подключен или отображает «Метод тестирования был удален!» На консоли)
Поэтому вопрос таков: если я напишу что-то вроде этого:
static void Main(string[] args)
{
X(new TestClass());
}
Я не вижу ни одного индикатора, который метод Dispose был вызван? Является ли контекст TestClass () автоматически удаляемым, если выполнение метода было успешным / законченным.
Вызывается ли метод dispose, когда сборщик мусора очищает это? Я обеспокоен тем, что ресурсоемкие контексты все еще будут открыты?