Чем больше я копаюсь в C# и GC, я нахожу все больше и больше вещей, о которых я не совсем уверен. Я всегда думал, что Dispose и соответствующий Finalizer необходимы только при наличии неуправляемых ресурсов в моих классах.Должен ли я удалить обработчик
Но у меня есть много случаев, когда есть только родные классы C#, где мне не совсем понятно, нужен ли мне Dispose и соответствующий Finalizer. Например, когда у меня есть обработчики событий, связанные с моими событиями.
Нужно ли удалять обработчики событий при вызове Dispose. Также мне сказали, что объект может не получить, если обработчики событий все еще подключены. Если это так, то GC каким-то образом скомпрометирован.
Можно ли суммировать, когда и как мне нужно реализовать Dispose и Finalizer?
На самом деле у меня есть больше вопросов об этом, но, возможно, ответ на этот вопрос может помочь мне дальше.
Связанный пост: [Плохо не отменять регистрацию обработчиков событий?] (Http://stackoverflow.com/questions/1061727/is-it-bad-to-not-unregister-event-handlers) – SwDevMan81
Это может быть полезно: http://stackoverflow.com/questions/27994984/does-not-removing-event-handlers-cause-problems-in-net/27995156#27995156.Краткая версия: не забудьте отключить обработчики событий, подключенные к событиям на долгоживущих объектах; не беспокойтесь о отключении обработчиков событий на короткоживущих объектах. – adv12
Также от Jon Skeet: [Должен ли я всегда отключать обработчики событий в методе Dispose?] (Http://stackoverflow.com/questions/17399991/should-i-always-disconnect-event-handlers-in-the- dispose-method) – bokibeg