Изменения документа Dispose

Редактировал(а) Alexandr Fokin 2024/06/02 16:03

От версии 1.4
отредактировано Alexandr Fokin
на 2023/02/15 23:09
Изменить комментарий: К данной версии нет комментариев
К версии 1.10
отредактировано Alexandr Fokin
на 2024/06/02 16:02
Изменить комментарий: К данной версии нет комментариев

Сводка

Подробности

Свойства страницы
Содержимое
... ... @@ -33,7 +33,8 @@
33 33   }
34 34   }
35 35  }{{/code}}
36 -|(% style="width:465px" %)Отчистка управляемых ресурсов|(% style="width:1030px" %){{code language="C#"}}public sealed class Foo : IDisposable
36 +|(% style="width:465px" %)Отчистка управляемых ресурсов
37 +(Соответственно не использует финализацию).|(% style="width:1030px" %){{code language="C#"}}public sealed class Foo : IDisposable
37 37  {
38 38   private readonly IDisposable _disposable1;
39 39   private readonly IDisposable _disposable2;
... ... @@ -76,3 +76,21 @@
76 76   base.Dispose(disposing);
77 77   }
78 78  }{{/code}}
80 +|(% style="width:465px" %)Пример использование механизма отчистки для воскрешения (resurrection) объекта.
81 +\\Можно доработать для использования Dispose (не подавляется финализация, не выполняется повторная регистрация).
82 +Если объект внутри себя использует другие финализируемые объекты, то внутри блока финализатора их состояние может быть недетерминировано (скорее всего их придется пересоздавать).|(% style="width:1030px" %){{code language="C#"}}class A {
83 + private IObjectPool _pool = ...;
84 +
85 + ~A() {
86 + //will not die. keep a reference in resurectedA.
87 + _pool.ReturnToPool(this);
88 + GC.ReRegisterForFinalize(this);
89 + }
90 +}{{/code}}
91 +|(% style="width:465px" %)Dispose и упаковка (boxing)|(% style="width:1030px" %)(((
92 +If my struct implements IDisposable will it be boxed when used in a using statement?
93 +[[https:~~/~~/stackoverflow.com/questions/2412981/if-my-struct-implements-idisposable-will-it-be-boxed-when-used-in-a-using-statem/2413844#2413844>>https://stackoverflow.com/questions/2412981/if-my-struct-implements-idisposable-will-it-be-boxed-when-used-in-a-using-statem/2413844#2413844]]
94 +
95 +When does a using-statement box its argument, when it's a struct?
96 +[[https:~~/~~/stackoverflow.com/questions/1330571/when-does-a-using-statement-box-its-argument-when-its-a-struct>>https://stackoverflow.com/questions/1330571/when-does-a-using-statement-box-its-argument-when-its-a-struct]]
97 +)))