Condividi tramite


IClosableNotifier Interfaccia

Definizione

Se implementato in una classe di runtime WinRT, fornisce una notifica che un oggetto è stato chiuso (eliminato).

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
Derivato
Attributi

Commenti

Lo scopo di questa interfaccia è fornire una notifica affidabile quando l'oggetto sottostante viene chiuso (eliminato) e anche un modo per verificare se l'oggetto è chiuso.

In genere, un oggetto deve sapere quando un altro oggetto WinRT viene chiuso se dipende da tale oggetto WinRT per soddisfare la relativa funzionalità. Se l'oggetto WinRT da cui dipende è chiuso, è possibile eseguire operazioni di pulizia e/o annullare la registrazione dagli eventi.

Stato dell'oggetto quando vengono generati eventi

Quando l'evento Closed o FrameworkClosed viene elaborato, l'oggetto WinRT sottostante è già chiuso. Se si tenta di accedere alle proprietà dell'oggetto (ad eccezione di IsClosed) o metodi, RO_E_CLOSED viene restituito dopo questo punto. Le uniche operazioni consentite sono l'annullamento della sottoscrizione dagli eventi e il controllo della proprietà IsClosed sull'oggetto .

Ordine degli eventi

Gli eventi Closed e FrameworkClosed vengono generati in coppie. Viene innanzitutto generato l'evento FrameworkClosed per offrire ai framework la possibilità di pulire il proprio stato, quindi viene generato l'evento Closed per fornire anche al codice dell'applicazione la possibilità di eseguire la pulizia.

I framework rispondono al primo evento in modo che possano prepararsi per chiamare un'applicazione nel framework dopo la chiusura dell'oggetto. Ad esempio, un framework può null-out lo stato interno in modo che le applicazioni che tentano di usare tale stato ricevano un errore appropriato anziché tentare di operare su uno stato non valido.

Possibili modi in cui un oggetto WinRT può essere chiuso

  • Se l'oggetto WinRT è associato a un determinato thread, in genere viene chiuso quando il thread viene chiuso.
  • Se l'oggetto WinRT implementa IClosable.Close, il codice esterno può richiedere esplicitamente che venga chiuso.
  • Se l'ultimo riferimento sicuro all'oggetto è stato rilasciato, l'oggetto può essere chiuso.

Nessun mittente o argomenti per l'evento

Se gli eventi Closed e FrameworkClosed vengono generati in un oggetto WinRT eliminato e che non contiene riferimenti più sicuri in memoria, il mittente e i parametri degli argomenti evento di un TypedEventHandler saranno null. Per supportare questo caso, questi eventi non forniscono il mittente o gli argomenti dell'evento e il ClosableNotifierHandler non accetta parametri. Il sottoscrittore degli eventi è responsabile della conoscenza dell'oggetto WinRT a cui è sottoscritto.

Proprietà

IsClosed

Ottiene un valore che indica se l'oggetto è chiuso (eliminato).

Eventi

Closed

Si verifica quando l'oggetto è stato chiuso (eliminato), dopo l'evento FrameworkClosed , per notificare all'app che l'oggetto è chiuso.

FrameworkClosed

Si verifica quando l'oggetto è stato chiuso (eliminato), prima dell'evento Closed, per notificare al framework (ad esempio XAML) che l'oggetto è chiuso.

Si applica a