Метод Dispose в файле дизайнера формы VB.NET - PullRequest
1 голос
/ 12 сентября 2011
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
    Try
        If disposing AndAlso components IsNot Nothing Then
            components.Dispose()
        End If
    Finally
        MyBase.Dispose(disposing)
    End Try

Может кто-нибудь сказать, пожалуйста, почему мы используем это в designer.vb?

1 Ответ

3 голосов
/ 12 сентября 2011

Dispose используется для освобождения ресурсов, которые не управляются средой выполнения (неуправляемые ресурсы). К ним относятся файлы, потоки, шрифты и т. Д. сборщик мусора автоматически освобождает память, выделенную для управляемого объекта, когда этот объект больше не используется. Однако невозможно предсказать, когда произойдет сборка мусора. Кроме того, сборщик мусора не знает о неуправляемых ресурсах, таких как дескрипторы окон или открытые файлы и потоки.


В вашем коде метод Dispose базового класса переопределяется реализацией дочернего класса, поэтому ключевое слово overriden указывает на вызов Mybase.Dispose. Базовый класс - IContainer, а дочерний класс - Form. Метод Dispose доступен в интерфейсе IDisposable.


В designer.vb этот автоматически сгенерированный код служит для вызова Dispose в компонентах формы, когда Dispose вызывается в форме, т.е. когда форма располагается, также утилизируйте ее компоненты.

<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
    Try
        ' If Dispose() has been called explicitly free both managed and 
        ' unmanaged resources (disposing = true)
        ' and there are components in the form
        If disposing AndAlso components IsNot Nothing Then 
            ' Free the resources used by components
            components.Dispose()
        End If
    Finally
        ' Once done disposing the current form's resources, 
        ' dispose the resources held by its base class 
        ' Finally clause executes this code block (to dispose base class)
        ' whether or not an exception has been encountered while 
        ' disposing the resources in the form
        MyBase.Dispose(disposing)
    End Try

Дополнительная информация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...