Sprache

IClosableNotifier Schnittstelle

Definition

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.

Gilt für: