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 物件已關閉,您可以執行清除作業和/或從事件取消註冊。
引發事件時的物件狀態
Closed
處理 或 FrameworkClosed
事件時,基礎 WinRT 物件已經關閉。 如果您嘗試存取物件的屬性 () 或方法除外 IsClosed
, RO_E_CLOSED
則會在此點之後傳回。 唯一允許的作業是取消訂閱事件,並檢查 IsClosed
物件上的 屬性。
事件的順序
Closed
和 FrameworkClosed
事件會以配對方式引發。 首先會 FrameworkClosed
引發 事件,讓架構有機會清除其狀態,然後 Closed
引發 事件,同時讓應用程式程式碼有機會清除。
架構會回應第一個事件,以便讓應用程式在物件關閉之後呼叫架構。 例如,架構可能會 null
輸出內部狀態,讓嘗試使用該狀態的應用程式會收到適當的錯誤,而不是嘗試操作不正確狀態。
可以關閉 WinRT 物件的可能方式
- 如果 WinRT 物件系結至特定執行緒,通常會線上程結束時關閉。
- 如果 WinRT 物件實作
IClosable.Close
,外部程式碼可以明確要求關閉它。 - 如果已釋放物件的最後一個強式參考,則可以關閉物件。
事件沒有傳送者或引數
Closed
如果在已處置的 WinRT 物件上引發 和 FrameworkClosed
事件,而且記憶體中沒有任何更強大的參考,則TypedEventHandler的傳送者和事件引數參數會是 null
。 為了支援這種情況,這些事件不會提供 傳送者 或事件引數,而 ClosableNotifierHandler 不會採用任何參數。 事件的訂閱者負責知道其訂閱的 WinRT 物件。
屬性
IsClosed |
取得值,這個值表示物件是否在處置) (關閉。 |
事件
Closed |
當物件在 FrameworkClosed 事件之後 (處置) 關閉時發生,以通知應用程式物件已關閉。 |
FrameworkClosed |
發生于物件在 Closed 事件之前 (處置) 關閉時,通知架構 (例如 XAML) 關閉物件。 |
適用於
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應