Ein Callback-VI enthält den Programmcode zur Verarbeitung der angegebenen ActiveX- und .NET-Ereignisse. Zum Verarbeiten der Ereignisse von ActiveX-Elementen und .NET-Objekten müssen Sie ein Callback-VI erstellen. Das VI wird bei jedem Auftreten des Ereignisses ausgeführt. Wenn Sie ein Callback-VI erstellen, erstellt LabVIEW ein ablaufinvariantes VI, mit dem Ereignisse bearbeitet werden können. Die Bestandteile eines Callback-VIs lauten wie folgt:

  • Allgemeine Angaben zum Ereignis mit den Angaben:
    • Ereignisquelle ist ein numerisches Bedienelement zur Angabe der Ereignisquelle, wie LabVIEW, ActiveX oder .NET. Der Wert 1 steht für ein ActiveX-Ereignis. Der Wert 2 steht für .NET.
    • Ereignistyp gibt an, was für ein Ereignis aufgetreten ist. Bei Ereignissen der Benutzeroberfläche handelt es sich hierbei um eine Enum, und wenn das Ereignis über .NET, ActiveX oder eine andere Quelle ausgelöst wurde, um einen vorzeichenlosen 32-Bit-Integer. Bei ActiveX-Ereignissen wird der Ereignistyp als Methodenkennung des registrierten Ereignisses angegeben. Diese kann bei .NET ignoriert werden.
    • Zeitstempel gibt den Zeitpunkt in Millisekunden an, zu dem das Ereignis stattgefunden hat.
  • Elementreferenz ist eine Referenz auf die ActiveX-Referenz oder das .NET-Objekt, an der/dem das Ereignis stattgefunden hat.
  • Ereignisdaten ist ein Cluster mit den ereignisspezifischen Parametern. Bei Auswahl eines Ereignisses in der Funktion Ereignis-Callback registrieren werden die Ereignisdaten automatisch konfiguriert. Wenn es zu einem Ereignis keine Daten gibt, wird dieses Element nicht erstellt.
  • Ereignisdaten (Ausgang) ist ein Cluster mit den spezifischen Parametern des Ereignisses, das vom Callback-VI verarbeitet werden soll. Dieses Element ist jedoch nur dann verfügbar, wenn das ActiveX- oder .NET-Ereignis Ausgangsparameter aufweist.
  • (Optional) Benutzerparameter sind die Daten, die an das Callback-VI übergeben werden sollen, wenn am ActiveX- oder .NET-Objekt das entsprechende Ereignis auftritt.
Hinweis Als Callback-VI kann auch ein vorhandenes VI verwendet werden, solange das Anschlussfeld des VIs mit dem der Ereignisdaten übereinstimmt. Das Callback-VI muss ablaufinvariant und die Referenz zum Callback-VI muss strikt typisiert sein.

Damit Callback-VIs ohne Unterbrechung ausgeführt werden können, wird in LabVIEW die Bearbeitung von Meldungen des Betriebssystems so lange verzögert, bis die Ausführung aller Callback-VIs beendet ist oder ein modales Fenster geladen wird. Solange die Bearbeitung von Betriebssystemmeldungen verzögert wird, ist auch das LabVIEW-Frontpanel blockiert. Ein modales Fenster ist ein Fenster, das so lange aktiv oder vor allen anderen LabVIEW-Fenstern sichtbar bleibt, bis es geschlossen oder ein anderes modales Fenster geöffnet wird. Während ein modales Fenster geöffnet ist, kann kein anderes Fenster bedient werden. In LabVIEW sind die meisten Dialogfelder modale Fenster.

Ein nicht modales Fenster kann nicht von einem LabVIEW-Callback-VI oder einer DLL aus geöffnet werden, während ein anderer Prozess ausgeführt wird. Weitere Informationen zu diesem Thema finden Sie unter Programmatisches Aufrufen nicht modaler Fenster.

Hinweis ActiveX-Objekte rufen ActiveX-Callback-VIs synchron auf. Das heißt, das Objekt kann möglicherweise während der Callback-Ausführung keinen weiteren Programmcode abarbeiten, ist also blockiert. Überdenken Sie daher genau, wie das Callback-Diagramm mit dem restlichen Programmcode zusammenarbeitet. Wenn z. B. in einem ActiveX-Callback-VI vor dem Callback ein nicht ablaufinvariantes Unterprogramm aufgerufen wird, kann sich das VI aufhängen.