IClosableNotifier 接口
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
在 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 对象已关闭。 如果尝试访问对象的属性 () 或方法除外 IsClosed
, RO_E_CLOSED
则会在此点之后返回。 允许的唯一操作是取消订阅事件并检查 IsClosed
对象上的 属性。
事件的顺序
Closed
和 FrameworkClosed
事件成对引发。 首先引发 FrameworkClosed
事件以让框架有机会清理其状态,然后 Closed
引发 事件,以便同时为应用程序代码提供清理的机会。
框架响应第一个事件,以便它们可以为应用程序在对象关闭后调用框架做好准备。 例如,框架可能会 null
退出内部状态,以便尝试使用该状态的应用程序会收到适当的错误,而不是尝试在无效状态上运行。
WinRT 对象的可能关闭方式
- 如果 WinRT 对象绑定到某个线程,则通常在线程退出时关闭该对象。
- 如果 WinRT 对象实现
IClosable.Close
,则外部代码可以显式请求将其关闭。 - 如果释放了对 对象的最后一个强引用,则可以关闭该对象。
事件没有发送方或参数
Closed
如果 和 FrameworkClosed
事件在已释放的 WinRT 对象上引发,并且内存中没有任何更强大的引用,则 TypedEventHandler 的发送方和事件参数将为 null
。 为了支持这种情况,这些事件不提供 发送方 或事件参数, 并且 ClosableNotifierHandler 不采用任何参数。 事件的订阅者负责知道其订阅的 WinRT 对象。
属性
IsClosed |
获取一个值,该值指示对象是否关闭 (释放) 。 |
事件
Closed |
当对象已关闭 (释放) FrameworkClosed 事件之后,通知应用对象已关闭时发生。 |
FrameworkClosed |
当对象已关闭 (释放) ,在 Closed 事件之前发生,以通知框架 ((如 XAML) 对象已关闭)。 |