1. C# / Говнокод #9169

    +114

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    public void Dispose()
            {
                Dispose(true);  
                GC.SuppressFinalize(this);
            }
    
            protected virtual void Dispose(bool disposing)
            {
                _channelRedrawManager.StopProcessing();
            }
    
            ~ChannelControlViewModel()
            {
                Dispose(false);
            }

    Деструкти правильно..

    Запостил: Lifter, 19 Января 2012

    Комментарии (5) RSS

    • Паттерн реализован вполне правильно, не хватает только галочки bool _isDisposed, позволяющей вызывать Dispose(bool) только 1 раз (стандартный косяк, с каждым бывает хотя бы раз). Где смеяться?
      Ответить
      • Все это используется для управляемого класса..
        Ответить
        • А если от него отнаследовать другой класс, в котором будут неуправляемые ресурсы (Судя по тому, что это WPF, не дай бог, конечно, но все таки)?
          Ответить
        • Если СhannelRedrawManager наследуется от CriticalFinalizerObject, то в зависимости от того, что делает StopProcessing, код может оказаться вполне корректным. Иначе, конечно, обращаться к _channelRedrawManager нельзя. Но вообще ошибка неинтересная )
          Ответить
    • Деструкти меня, деструкти меня полностью!
      Ответить

    Добавить комментарий