-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFinalizableClass.cs
38 lines (33 loc) · 1.16 KB
/
FinalizableClass.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
namespace TodoApplication
{
public class Counter
{
public int Value { get; private set; }
public Counter()
{
Value = 0;
}
public void Increase()
{
Value++;
}
}
// Класс, который увеличивает значение Counter-а каждый раз, когда сборщик мусора собирает объект этого класса.
// Нужен, чтобы протестировать, что стек не оставляет указателей на вытесненные из стека объекты.
class FinalizableClass
{
public Counter Counter;
public FinalizableClass(Counter counter)
{
Counter = counter;
}
// Это деструктор. Специальный метод, который вызывается сборщиком мусора, перед тем как освободить память от этого объекта.
~FinalizableClass()
{
lock (Counter)
{
Counter.Increase();
}
}
}
}