IClosableNotifier Schnittstelle
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Wenn sie in einer WinRT-Laufzeitklasse implementiert wird, wird die Benachrichtigung bereitgestellt, dass ein Objekt geschlossen (verworfen) wurde.
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
- Abgeleitet
- Attribute
Hinweise
Zweck dieser Schnittstelle ist es, eine zuverlässige Benachrichtigung bereitzustellen, wenn das zugrunde liegende Objekt geschlossen (verworfen) wird und auch eine Möglichkeit zum Überprüfen, ob das Objekt geschlossen ist.
In der Regel muss ein Objekt wissen, wann ein anderes WinRT-Objekt geschlossen wird, wenn es von dem WinRT-Objekt abhängt, um seine Funktionalität zu erfüllen. Wenn das WinRT-Objekt, von dem es abhängt, geschlossen ist, können Sie Bereinigungsvorgänge ausführen und/oder die Registrierung von Ereignissen aufheben.
Objektstatus, wenn Ereignisse ausgelöst werden
Wenn das ClosedFrameworkClosed Ereignis verarbeitet wird, wird das zugrunde liegende WinRT-Objekt bereits geschlossen. Wenn Sie versuchen, auf die Eigenschaften des Objekts zuzugreifen (mit Ausnahme IsClosedvon ) oder Methoden, RO_E_CLOSED wird nach diesem Punkt zurückgegeben. Die einzigen zulässigen Vorgänge sind das Abschreiben von Ereignissen und das Überprüfen der IsClosed Eigenschaft für das Objekt.
Reihenfolge der Ereignisse
Die Closed Ereignisse FrameworkClosed werden in Paaren ausgelöst. Zuerst wird das FrameworkClosed Ereignis ausgelöst, um Frameworks die Möglichkeit zu geben, ihren Zustand zu bereinigen, und das Closed Ereignis wird ausgelöst, um auch Anwendungscode zu bereinigen.
Frameworks reagieren auf das erste Ereignis, sodass sie sich darauf vorbereiten können, dass eine Anwendung das Framework aufruft, nachdem das Objekt geschlossen wurde. Ein Framework kann nullz. B. den internen Zustand aus-out, sodass Anwendungen, die versuchen, diesen Zustand zu verwenden, einen geeigneten Fehler erhalten, anstatt versuchen, einen ungültigen Zustand auszuführen.
Mögliche Möglichkeiten zum Schließen eines WinRT-Objekts
- Wenn das WinRT-Objekt an einen bestimmten Thread gebunden ist, wird es in der Regel geschlossen, wenn der Thread beendet wird.
- Wenn das WinRT-Objekt implementiert wird
IClosable.Close, kann externer Code explizit anfordern, dass es geschlossen wird. - Wenn der letzte starke Verweis auf das Objekt freigegeben wurde, kann das Objekt geschlossen werden.
Kein Absender oder Keine Argumente für das Ereignis
Wenn die Closed Ereignisse für FrameworkClosed ein WinRT-Objekt ausgelöst werden, das verworfen wurde und keine starken Verweise enthält, die sie im Arbeitsspeicher enthalten, dann wäre nullder Parameter des Absenders und ereignisses eines TypedEventHandlers . Um diesen Fall zu unterstützen, stellen diese Ereignisse keine Absender - oder Ereignisargumente bereit, und der ClosableNotifierHandler verwendet keine Parameter. Der Abonnent der Ereignisse ist dafür verantwortlich, zu wissen, welches WinRT-Objekt es abonniert hat.
Eigenschaften
| Name | Beschreibung |
|---|---|
| IsClosed |
Ruft einen Wert ab, der angibt, ob das Objekt geschlossen (disposed) ist. |
Ereignisse
| Name | Beschreibung |
|---|---|
| Closed |
Tritt auf, wenn das Objekt geschlossen (disposed) nach dem FrameworkClosed-Ereignis geschlossen wurde, um die App darüber zu benachrichtigen, dass das Objekt geschlossen ist. |
| FrameworkClosed |
Tritt auf, wenn das Objekt geschlossen (disposed) vor dem Closed-Ereignis geschlossen wurde, um das Framework (z. B. XAML) zu benachrichtigen, dass das Objekt geschlossen ist. |