共用方式為


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 物件已經關閉。 如果您嘗試存取物件的屬性 () 或方法除外 IsClosedRO_E_CLOSED 則會在此點之後傳回。 唯一允許的作業是取消訂閱事件,並檢查 IsClosed 物件上的 屬性。

事件的順序

ClosedFrameworkClosed 事件會以配對方式引發。 首先會 FrameworkClosed 引發 事件,讓架構有機會清除其狀態,然後 Closed 引發 事件,同時讓應用程式程式碼有機會清除。

架構會回應第一個事件,以便讓應用程式在物件關閉之後呼叫架構。 例如,架構可能會 null 輸出內部狀態,讓嘗試使用該狀態的應用程式會收到適當的錯誤,而不是嘗試操作不正確狀態。

可以關閉 WinRT 物件的可能方式

  • 如果 WinRT 物件系結至特定執行緒,通常會線上程結束時關閉。
  • 如果 WinRT 物件實作 IClosable.Close ,外部程式碼可以明確要求關閉它。
  • 如果已釋放物件的最後一個強式參考,則可以關閉物件。

事件沒有傳送者或引數

Closed如果在已處置的 WinRT 物件上引發 和 FrameworkClosed 事件,而且記憶體中沒有任何更強大的參考,則TypedEventHandler傳送者和事件引數參數會是 null 。 為了支援這種情況,這些事件不會提供 傳送者 或事件引數,而 ClosableNotifierHandler 不會採用任何參數。 事件的訂閱者負責知道其訂閱的 WinRT 物件。

屬性

IsClosed

取得值,這個值表示物件是否在處置) (關閉。

事件

Closed

當物件在 FrameworkClosed 事件之後 (處置) 關閉時發生,以通知應用程式物件已關閉。

FrameworkClosed

發生于物件在 Closed 事件之前 (處置) 關閉時,通知架構 (例如 XAML) 關閉物件。

適用於