ChangeMonitor.Dispose Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Освобождает все ресурсы, используемые текущим экземпляром класса ChangeMonitor.
Перегрузки
| Имя | Описание |
|---|---|
| Dispose() |
Освобождает все ресурсы, используемые текущим экземпляром ChangeMonitor класса. |
| Dispose(Boolean) |
Освобождает все управляемые и неуправляемые ресурсы и все ссылки на ChangeMonitor экземпляр. Эта перегрузка должна быть реализована производными классами монитора изменений. |
Комментарии
Метод Dispose используется для выпуска экземпляра ChangeMonitor и связанных ресурсов. Dispose Открытый метод вызывается для координации процесса удаления с ключевыми событиями жизненного цикла производных классов монитора изменений (например, инициализация), а также для освобождения ChangeMonitor экземпляра, чтобы экземпляр можно было собирать мусор. Метод Dispose реализуется производными классами мониторинга изменений для удаления управляемых и неуправляемых ресурсов.
Dispose()
- Исходный код:
- ChangeMonitor.cs
- Исходный код:
- ChangeMonitor.cs
- Исходный код:
- ChangeMonitor.cs
- Исходный код:
- ChangeMonitor.cs
Освобождает все ресурсы, используемые текущим экземпляром ChangeMonitor класса.
public:
virtual void Dispose();
public void Dispose();
abstract member Dispose : unit -> unit
override this.Dispose : unit -> unit
Public Sub Dispose ()
Реализации
Исключения
Инициализация не завершена в производном классе монитора изменений, который называется базовым Dispose() методом.
Комментарии
Метод Dispose вызывает Dispose метод производных классов только один раз, при первом вызове. Последующие Dispose вызовы метода не влияют. После вызова IsDisposed метода для свойства задано trueзначение .
Перегрузка Dispose должна вызываться для удаления экземпляра ChangeMonitor . Ниже приведены правила для вызова метода dispose:
Прежде чем элемент вставляется в кэш, он несет ответственность вызывающего объекта на удаление экземпляра ChangeMonitor .
После того как элемент кэша и ChangeMonitor экземпляры, связанные с ним, передаются в кэш, реализующий кэш, который должен убедиться Dispose , что вызывается, даже если вставка завершается ошибкой.
После того как элемент и связанные ChangeMonitor с ним экземпляры передаются в кэш, вызывающий объект не должен удалять зависимость, так как при Dispose вызове метода вызов вызывается так же, как если зависимость изменилась. В результате OnChanged метод вызывается автоматически.
Учитывая эти правила, Dispose метод должен вызываться одним из следующих способов:
Пользователи должны вызвать перегрузку Dispose метода, если они решили не вставлять производный экземпляр монитора изменений в кэш.
Реализация кэша отвечает за вызов Dispose перегрузки, если реализация пытается вставить экземпляр монитора изменений в кэш объектов, но вставка завершается ошибкой. При попытке вставки возникает исключение, реализация кэша должна удалить все связанные зависимости.
Если запись кэша удалена, реализация кэша также должна удалить зависимость.
Внутренняя реализация OnChanged метода автоматически вызывает Dispose метод после вызова обратного вызова, зарегистрированного с помощью NotifyOnChanged метода.
Note
Это автоматическое удаление во время запуска события происходит только в том случае, если инициализация экземпляра ChangeMonitor завершена ранее.
Когда конструктор производного монитора изменений вызывает InitializationComplete метод, если состояние монитора изменений уже изменилось (то есть состояние, отслеживаемое уже изменилось, когда конструктор был еще активным), InitializationComplete метод будет автоматически удалять монитор изменений.
Note
Пользователи Dispose не должны вызывать метод. Однако невозможно запретить пользователям вызывать метод. Поэтому, если они выполняются, OnChanged вызывается метод. В этом случае запись кэша уведомляется, как если бы зависимость изменилась.
Чтобы предотвратить переопределение Dispose производных классов, метод не является явной реализацией интерфейса.
См. также раздел
Применяется к
Dispose(Boolean)
- Исходный код:
- ChangeMonitor.cs
- Исходный код:
- ChangeMonitor.cs
- Исходный код:
- ChangeMonitor.cs
- Исходный код:
- ChangeMonitor.cs
Освобождает все управляемые и неуправляемые ресурсы и все ссылки на ChangeMonitor экземпляр. Эта перегрузка должна быть реализована производными классами монитора изменений.
protected:
abstract void Dispose(bool disposing);
protected abstract void Dispose(bool disposing);
abstract member Dispose : bool -> unit
Protected MustOverride Sub Dispose (disposing As Boolean)
Параметры
- disposing
- Boolean
true для выпуска управляемых и неуправляемых ресурсов и любых ссылок на ChangeMonitor экземпляр; false для выпуска только неуправляемых ресурсов. При false передаче метод вызывается потокомDispose(Boolean), и все внешние управляемые ссылки, скорее всего, больше не допустимы, finalizer так как они уже были собраны мусором.
Комментарии
Если значение disposingtrueравно, все управляемые и неуправляемые ресурсы удаляются и все ссылки на этот объект освобождаются, чтобы производный экземпляр монитора изменений можно собирать мусор. Гарантируется, что базовый Dispose метод вызовет реализованный Dispose метод только один раз.
Примечания для тех, кто реализует этот метод
Монитор изменений должен реализовать перегрузкуDispose(Boolean), чтобы освободить все управляемые и неуправляемые ресурсы при значенииdisposingtrue. Перегрузка Dispose(Boolean) метода, которая disposing имеет значение true , вызывается только один раз, а именно при первом удалении экземпляра. Монитор изменений не должен вызывать перегрузку напрямую Dispose(Boolean) . Производный монитор изменений может вызывать общедоступный метод без Dispose() параметров в базовом ChangeMonitor классе.
Кроме того, монитор изменений может реализовать метод завершения. В этом случае средство завершения может вызвать Dispose(Boolean) метод и передать его disposing значение false. Однако это обычно не требуется. Мониторинг изменений зависимостей обычно выполняется службой, которая поддерживает ссылку на экземпляр монитора изменений. Ссылка предотвращает сбор мусора экземпляра и поэтому делает метод завершения ненужным. Чтобы избежать утечки памяти, при изменении OnChanged(Object) зависимостей метод удаляет экземпляр монитора изменений (если инициализация не завершена).