Поделиться через


IClosableNotifier Интерфейс

Определение

При реализации в классе среды выполнения WinRT предоставляет уведомление о том, что объект был закрыт (удален).

public interface class IClosableNotifier
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.Foundation.WindowsAppSDKContract, 65540)]
/// [Windows.Foundation.Metadata.Guid(696903995, 60687, 24185, 144, 242, 234, 197, 146, 252, 110, 106)]
struct IClosableNotifier
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.Foundation.WindowsAppSDKContract), 65540)]
[Windows.Foundation.Metadata.Guid(696903995, 60687, 24185, 144, 242, 234, 197, 146, 252, 110, 106)]
public interface IClosableNotifier
Public Interface IClosableNotifier
Производный
Атрибуты

Комментарии

Цель этого интерфейса — предоставить надежное уведомление, когда базовый объект закрыт (удален), а также способ проверить, закрыт ли объект.

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

Состояние объекта при вызове событий

При обработке события Closed или FrameworkClosed базовый объект WinRT уже закрыт. Если вы пытаетесь получить доступ к свойствам объекта (кроме IsClosed) или методов, RO_E_CLOSED возвращается после этой точки. Единственными допустимыми операциями являются отмена подписки на события и проверка свойства IsClosed объекта.

Порядок событий

События Closed и FrameworkClosed создаются в парах. Сначала вызывается событие FrameworkClosed, чтобы дать платформам возможность очистить свое состояние, а затем вызывается событие Closed, чтобы также дать коду приложения возможность очистки.

Платформы реагируют на первое событие, чтобы они могли подготовиться к вызову приложения в платформу после закрытия объекта. Например, платформа может nullвнутреннее состояние, чтобы приложения, пытающиеся использовать это состояние, получат соответствующую ошибку, а не пытается работать с недопустимым состоянием.

Возможные способы закрытия объекта WinRT

  • Если объект WinRT привязан к определенному потоку, он обычно закрывается при выходе потока.
  • Если объект WinRT реализует IClosable.Close, внешний код может явно запрашивать его закрытие.
  • Если была выпущена последняя строчная ссылка на объект, объект можно закрыть.

Нет отправителя или аrgs для события

Если события Closed и FrameworkClosed создаются на объекте WinRT, который был удален и не содержит более сильных ссылок, содержащих его в памяти, то отправитель и параметры событий TypedEventHandler будут null. Чтобы поддержать этот случай, эти события не предоставляют отправителя или события, а ClosableNotifierHandler не принимает никаких параметров. Подписчик событий отвечает за знание того, на какой объект WinRT он подписан.

Свойства

IsClosed

Возвращает значение, указывающее, закрыт ли объект (удален).

События

Closed

Происходит, когда объект был закрыт (удален), после события FrameworkClosed, чтобы уведомить приложение о закрытии объекта.

FrameworkClosed

Происходит, когда объект был закрыт (удален), перед событием закрытого , чтобы уведомить платформу (например, XAML), что объект закрыт.

Применяется к