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 对象何时关闭。 如果它所依赖的 WinRT 对象已关闭,则可以执行清理操作和/或从事件中注销。

引发事件时的对象状态

Closed处理 或 FrameworkClosed 事件时,基础 WinRT 对象已关闭。 如果尝试访问对象的属性 () 或方法除外 IsClosedRO_E_CLOSED 则会在此点之后返回。 允许的唯一操作是取消订阅事件并检查 IsClosed 对象上的 属性。

事件的顺序

ClosedFrameworkClosed 事件成对引发。 首先引发 FrameworkClosed 事件以让框架有机会清理其状态,然后 Closed 引发 事件,以便同时为应用程序代码提供清理的机会。

框架响应第一个事件,以便它们可以为应用程序在对象关闭后调用框架做好准备。 例如,框架可能会 null退出内部状态,以便尝试使用该状态的应用程序会收到适当的错误,而不是尝试在无效状态上运行。

WinRT 对象的可能关闭方式

  • 如果 WinRT 对象绑定到某个线程,则通常在线程退出时关闭该对象。
  • 如果 WinRT 对象实现 IClosable.Close,则外部代码可以显式请求将其关闭。
  • 如果释放了对 对象的最后一个强引用,则可以关闭该对象。

事件没有发送方或参数

Closed如果 和 FrameworkClosed 事件在已释放的 WinRT 对象上引发,并且内存中没有任何更强大的引用,则 TypedEventHandler发送方和事件参数将为 null。 为了支持这种情况,这些事件不提供 发送方 或事件参数, 并且 ClosableNotifierHandler 不采用任何参数。 事件的订阅者负责知道其订阅的 WinRT 对象。

属性

IsClosed

获取一个值,该值指示对象是否关闭 (释放) 。

事件

Closed

当对象已关闭 (释放) FrameworkClosed 事件之后,通知应用对象已关闭时发生。

FrameworkClosed

当对象已关闭 (释放) ,在 Closed 事件之前发生,以通知框架 ((如 XAML) 对象已关闭)。

适用于