Когда я не должен позвонить в GC.Suppressfinalize (это) в распоряжение?C#

Место общения программистов C#
Anonymous
 Когда я не должен позвонить в GC.Suppressfinalize (это) в распоряжение?

Сообщение Anonymous »

У меня есть такой простой класс, который реализует Idisposable и поэтому он попал в CA1816: правильно вызовите GC.Suppressfinalize:

Код: Выделить всё

public class A : IDisposable
{
// ...
int foo

public A()
{
SomeObj.SomeEvent += DoSomething;
}

public void Dispose()
{
SomeObj.SomeEvent -= DoSomething;
}
}
< /code>

изменить a.dispose () для вызова gc.suppressfinalize (объект). Это предотвратит полученные типы, которые вводят финализатор от необходимости переосмыслить «idisposable», чтобы назвать его. < /P>
< /blockquote>
Теперь я прочитал это, это Но я до сих пор не понимаю, для чего это предназначено (больше объяснений ниже). Итак, [b] мои вопросы [/b]:

  Должен ли я всегда добавлять gc.suppressfinalize (Object) 
в мой Отметьте метод, если я не понимаю, что это такое? и просто подавить Предупреждение? /code> делает. Я знаю, что я уже распорядился некоторые ресурсы в распоряжении (обработчики событий в примере или Idisposable ресурсы и т. Д.), Но как насчет переменных, таких как int foo , которые все еще нужно очистить? А как насчет предупреждающей части «это предотвратит полученные типы, которые вводят финализатор от необходимости повторного внедрения»?

Подробнее здесь: https://stackoverflow.com/questions/774 ... in-dispose

Вернуться в «C#»