3.61 DM_SendEvent
Die Ausführung einer dem externen Ereignis zugeordneten Regel wird durch die Anwendung über die Funktion DM_SendEvent vorgemerkt. Vorgemerkt
bedeutet, dass die Regel nicht sofort ausgeführt wird, sondern das externe Ereignis in eine Queue eingetragen wird und entsprechend den Mechanismen für Dialogereignisse weiterverarbeitet wird.
Dieses Ereignis wird dann vom IDM über die normale Ereignisverarbeitungslogik abgearbeitet und führt zur Bearbeitung einer Regel im Schema on <object> extevent <no.>.
DM_Boolean DML_default DM_EXPORT DM_SendEvent
(
DM_ID objectID,
DM_Value *eventData,
DM_UInt argc,
DM_Value *argv,
DM_Options options
)
Parameter
-> DM_ID objectID
Dies ist der Identifikator des Objekts, an das dieses externe Ereignis geschickt werden soll.
-> DM_Value *eventData
Dieser Parameter ist das externe Ereignis, das ausgelöst werden soll.
-> DM_Int argc
In diesem Parameter wird die Anzahl der Parameter (bis zu 16) übergeben.
-> DM_Value *argv
Mit Hilfe dieses Parameters werden die Argumente (bis zu 16) angegeben, die beim Regelaufruf vom IDM mit übergeben werden sollen. Dieser Vektor muss dabei die in dem Parameter argc angegebene Länge haben.
-> DM_Options options
Als Option können bei dieser Funktion folgende Werte angegeben werden:
Option |
Bedeutung |
---|---|
Diese Option bedeutet, dass der Funktionsaufruf nicht mitprotokolliert werden soll, falls die Anwendung mit der Trace-Option gestartet worden ist. |
|
Diese Option kann gesetzt werden, wenn sichergestellt ist, dass die Funktion DM_SendEvent synchron zum Prozess aufgerufen wird. Dann kann die Funktion intern effizienter arbeiten. Synchron ist z.B. dann nicht der Fall, wenn aus einem Signal-Handler diese Funktion aufgerufen wird. |
|
Diese Option verhindert unter Microsoft Windows die Benutzung einer |
Rückgabewert
DM_TRUE |
Externes Ereignis konnte in die Queue gestellt werden. |
DM_FALSE |
Externes Ereignis konnte nicht in die Queue gestellt werden. |
Anmerkung zu Microsoft Windows
Die Funktion DM_SendEvent verwendet ab IDM-Version A.05.01.a eine Critical Section
um sicherzustellen, dass sie vollständig abgearbeitet ist, bevor diese Funktion oder die Funktion DM_QueueExtEvent das nächste Mal aufgerufen wird. Wird eine der beiden Funktionen in einer Situation aufgerufen, in der eine Critical Section
nicht zulässig ist, dann kann die Verwendung der Critical Section
durch die Option DMF_NoCriticalSection unterbunden werden.
Achtung
Ein Thread, der eine der beiden Funktionen ausführt darf nicht abgebrochen werden.
Siehe auch
C-Funktionen DM_QueueExtEvent, DM_SendMethod
Kapitel „Externe Ereignisse“ und eingebaute Funktion sendevent() im Handbuch „Regelsprache“
Ressource message