IClosableNotifier Interfaccia
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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 |
FrameworkClosed |
Si verifica quando l'oggetto è stato chiuso (eliminato), prima dell'evento Closed, per notificare al framework (ad esempio XAML) che l'oggetto è chiuso. |