Freigeben über


Einfrieren von Ereignissen

Ein Container kann ein Steuerelement benachrichtigen, dass es nicht bereit ist, auf Ereignisse zu reagieren, indem er IOleControl::FreezeEvents mit TRUE aufruft. Es kann die Fixierung der Ereignisse aufheben, indem FreezeEvents mit FALSE aufgerufen wird. Wenn ein Container Ereignisse einfriert, wird die Ereignisverarbeitung fixiert, nicht das Ereignis empfängt. Das heißt, ein Container kann weiterhin Ereignisse empfangen, während Ereignisse eingefroren sind. Wenn ein Container eine Ereignisbenachrichtigung empfängt, während seine Ereignisse fixiert sind, sollte der Container das Ereignis ignorieren. Es ist keine andere Aktion angebracht.

Ein Steuerelement sollte den Aufruf eines Containers von FreezeEvents mit TRUE notieren, wenn es für das Steuerelement wichtig ist, dass ein Ereignis nicht verpasst wird. Während die Ereignisverarbeitung eines Containers eingefroren ist, sollte ein Steuerelement eine der folgenden Techniken implementieren:

  • Lösen Sie die Ereignisse in vollem Wissen aus, dass der Container keine Aktion ergreift.
  • Verwerfen Sie alle Ereignisse, die das Steuerelement ausgelöst hätte.
  • Stellen Sie alle ausstehenden Ereignisse in die Warteschlange, und lösen Sie sie aus, nachdem der Container FreezeEvents mit FALSE aufgerufen hat.
  • Stellen Sie nur relevante oder wichtige Ereignisse in die Warteschlange, und lösen Sie sie aus, nachdem der Container FreezeEvents mit FALSE aufgerufen hat.

Jede Technik ist unter unterschiedlichen Umständen akzeptabel und geeignet. Der Steuerelemententwickler ist für die Bestimmung und Implementierung der geeigneten Technik für die Funktionalität des Steuerelements verantwortlich.